2010-12-29  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygtls.cc: Include stdlib.h.
	(_cygtls::init_thread): Seed random number generator on a per-thread
	basis.

2010-12-27  Christopher Faylor  <me+cygwin@cgf.cx>

	* include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 234.

2010-12-26  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygwin.din: Export program_invocation_name and program_invocation_short_name.
	* dcrt0.cc: Set program_invocation*name to correct values, based on
	argv[0].
	* globals.cc (program_invocation_name): Define.
	(program_invocation_short_name): Ditto.

2010-12-16  Corinna Vinschen  <corinna@vinschen.de>

	* security.cc (alloc_sd): Really fix erroneous inheritence entry
	duplication now.  Add more comments for clarity.

2010-12-15  Christian Franke  <franke@computer.org>

	* sec_acl.cc (getacl): Ensure that the default acl contains at least
	DEF_(USER|GROUP|OTHER)_OBJ entries.

2010-12-15  Corinna Vinschen  <corinna@vinschen.de>

	* security.cc (alloc_sd): Fix erroneous inheritence entry duplication.

2010-12-12  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (check_dir_not_empty): Never count more than 3 directory
	entries.

2010-12-12  Christopher Faylor  <me+cygwin@cgf.cx>

	* init.cc (search_for): Put this in shared section or suffer subtle
	problems with the tls.
	* pinfo.cc (status_exit): Add debug output to report on unexpected exit.
	* tls_pbuf.cc (tmp_pathbuf::c_get): Add more details to internal error.

2010-12-09  Corinna Vinschen  <corinna@vinschen.de>

	* autoload.cc (RETRY_COUNT): New define.
	(std_dll_init): Restructure loop to retry loading a DLL only if
	specific errors occur.  If these errors persist, try to load DLL
	with name only.

2010-12-08  Corinna Vinschen  <corinna@vinschen.de>

	* include/strings.h: Remove in favor of equivalent newlib file.

2010-12-08  Christian Franke  <franke@computer.org>

	* sec_acl.cc (getacl): Set DEF_CLASS_OBJ permissions to 07 instead
	of 0777.

2010-12-06  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (path_conv::check): Don't generate ENOENT for non-existant
	CYGDRIVE and NETDRIVE paths.  Add comment.

2010-12-02  Corinna Vinschen  <corinna@vinschen.de>

	* net.cc (get_xp_ifs): Fix counting of idx to return stable interface
	alias names for interfaces with multiple IPv4 addresses.

2010-11-29  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_slave::dup): Free path_conv strings
	to avoid memory leak.  Add comment.
	(fhandler_pty_master::dup): Ditto.
	* path.h (path_conv::free_strings): New method.

2010-11-23  Corinna Vinschen  <corinna@vinschen.de>

	* autoload.cc (SendARP): Remove.
	* net.cc (get_flags): Set IFF_NOARP flag for PPP and SLIP devices.
	(get_xp_ifs): Unify IFF_BROADCAST setting.  Drop calling SendARP to
	set IFF_NOARP flag.

2010-11-23  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check): Don't use FileNetworkOpenInformation
	on Netapps.  Relax condition for workaround.  Always request size
	information via FileStandardInformation info class in workaround.

2010-11-22  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (NETAPP_IGNORE): Add FILE_PERSISTENT_ACLS.
	(FS_IS_NETAPP_DATAONTAP): Drop test for FILE_PERSISTENT_ACLS.
	(fs_info::update): Set filetype to ntfs in remote case, too.  Fix a
	couple of comments.  Add test for Netapps faking to be FAT.

	* mount.h (IMPLEMENT_FS_FLAG): Simplify definition and usage.

2010-11-22  Corinna Vinschen  <corinna@vinschen.de>

	* net.cc (get_ipv4fromreg_ipcnt): Fix debug output.  Only create debug
	output if error is not ERROR_FILE_NOT_FOUND.
	(get_ipv4fromreg): Ditto.

2010-11-18  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_slave::fchown): Initialize mode to 0.

2010-11-15  Corinna Vinschen  <corinna@vinschen.de>

	* posix.sgml: Move llround and llroundf to implemented SUSv4 functions.
	* include/cygwin/version.h: Add llround and llroundf to the comment for
	the 233 CYGWIN_VERSION_API_MINOR bump.

2010-11-02  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>

	* include/paths.h (_PATH_VARTMP): Define.

2010-10-30  Christopher Faylor  <me+cygwin@cgf.cx>

	* localtime.cc (is_upper): Rename to isupper and include ctype.h to
	pull in standard macro.
	(lcl_is_set): Define as an enum.
	(tzsetwall): Assign lcl_is_set to correct enum values.
	(tzset): Ditto.  Copy as much of TZ as will fit to TZ buffer.

2010-10-27  Christopher Faylor  <me+cygwin@cgf.cx>

	* include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 233.

2010-10-24  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (do_exit): Don't set thread termination until all fds have
	been closed since an fd may rely on a thread.
	* fhandler_tty.cc: Reformat comment.
	(fhandler_pty_master::pty_master_thread): Don't treat
	ERROR_PIPE_CONNECTED state as an error.
	* globals.cc (exit_states): Reorder ES_THREADTERM.

	* path.cc (find_fast_cwd_pointers): Remove excessively wordy DEBUGGING output.

2010-10-24  Christopher Faylor  <me+cygwin@cgf.cx>

	* exceptions.cc (try_to_debug): Improve comment.
	* fhandler_tty.cc (fhandler_pty_master::fhandler_pty_master): Add a
	comment.

2010-10-23  Christopher Faylor  <me+cygwin@cgf.cx>

	* pinfo.cc (pinfo::exit): Grab a tty lock before setting pgid.

2010-10-23  Christopher Faylor  <me+cygwin@cgf.cx>

	* pinfo.cc (pinfo::exit): Reset tty pgrp to zero if no more handles open.
	(_pinfo::set_ctty): Remove debugging stuff.

2010-10-23  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_tty.cc (fhandler_pty_master::open): Remove debugging printf.

2010-10-23  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.h (fhandler_termios::tcinit): Make second argument
	non-optional.
	* fhandler_console.cc (fhandler_console::open): Specify second argument
	to tcinit.
	* fhandler_termios.cc (fhandler_termios::tcinit): Rename second
	argument.  Set pgid to 0 if this is a pty master.
	(fhandler_termios::tcgetpgrp): Just return value of pgid.  It will be
	zero if not initialized.
	* fhandler_tty.cc (fhandler_tty_slave::open): Specify second argument
	to tcinit.
	(fhandler_tty_slave::ioctl): Implement TIOCGPRP/TIOCSPGRP.  Fix switch
	indentation.
	(fhandler_tty_master::ioctl): Implement TIOCGPRP/TIOCSPGRP.
	* include/sys/termios.h (TIOCGPGRP): Define similarly to Linux.
	(TIOCSPGRP): Ditto.

2010-10-18   Marco Atzeri  <marco_atzeri@yahoo.it>

	* winsup/cygwin/cygwin.din: Add llround and llroundf.

2010-10-09  John Carey  <aeolus@electric-cloud.com>
	    Corinna Vinschen  <corinna@vinschen.de>

	* cygheap.h (cwdstuff::override_win32_cwd): Declare.
	* ntdll.h (struct _PEB): Add members accessed by the fast cwd method
	starting with Vista.
	(struct _KUSER_SHARED_DATA): Define with only the DismountCount.
	(RtlAllocateHeap): Declare.
	(RtlEnterCriticalSection): Declare.
	(RtlFreeHeap): Declare.
	(RtlLeaveCriticalSection): Declare.
	* path.cc (get_user_proc_parms): Remove.
	(struct _FAST_CWD): New structure.
	(fast_cwd_ptr): Define.
	(SharedUserData): Define.
	(peek32): Define.
	(find_fast_cwd_pointers): New function to find the global pointer
	to the current FAST_CWD structure.
	(copy_cwd_str): New helper function.
	(cwdstuff::override_win32_cwd): New method to set the Win32 CWD.
	(cwdstuff::init): Just call override_win32_cwd from here when
	started from native Win32 parent.
	(cwdstuff::set): Access Win32 CWD via PEB reference instead of using
	get_user_proc_parms function.  Memorize old DismountCount before
	opening directory handle.  Call override_win32_cwd to set up Win32 CWD. 
	Be more verbose in comments.
	* wincap.h (wincaps::has_fast_cwd): New element.
	* wincap.cc: Implement has_fast_cwd element throughout.

2010-10-08  Marco Atzeri  <marco_atzeri@yahoo.it>
	    Corinna Vinschen  <corinna@vinschen.de>

	* cygwin.din: Export new complex math functions from newlib.
	* posix.sgml: Move newly exported complex functions to implemented
	SUSv4 functions.
	* include/cygwin/version.h: Bump API minor version.

2010-10-07  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.h (fhandler_base::get_stat_access): Delete.
	* fhandler_disk_file.cc (fhandler_base::fstat_helper): Always check
	executable suffix to get x-bits for .exe files also in notexec case.
	Always reopen file when checking for file header.
	* ntdll.h (wait_pending): Delete.
	* path.cc (symlink_info::check_shortcut): Drop call to wait_pending
	since file is always opened for sync IO.
	(symlink_info::check_sysfile): Ditto.
	(MIN_STAT_ACCESS): Remove.
	(FULL_STAT_ACCESS): Remove.
	(symlink_info::check): Drop access flag.  Revert to open file with
	just read attributes access.  Reorder symlink check to check for
	reparse points first.  Don't check reparse points for anything else,
	even on remote drives.  Open file for GENERIC_READ when trying to
	read shortcuts or system-bit symlinks. Accommodate dropped access
	flag in call to path_conv_handle::set.
	* path.h (class path_conv_handle): Drop access flag and accommodate
	all related methods.

2010-10-06  Corinna Vinschen  <corinna@vinschen.de>

	* posix_ipc.cc (ipc_mutex_init): Call NtCreateMutant to make sure the
	access mask is correct.
	(ipc_cond_init): Take additional parameter to differ between send and
	receive event.  Call NtCreateEvent to make sure the access mask is
	correct.
	(ipc_cond_timedwait): Reset Event prior to calling WFMO.
	(struct mq_info): Split mqi_wait into two events, mqi_waitsend and
	mqi_waitrecv.
	(mq_open): Calloc mqinfo.  Create mqi_waitsend and mqi_waitrecv events. 
	Make sure all synchronization objects are closed in case of an error.
	(_mq_send): Wait for mqi_waitsend event.  Signal mqi_waitrecv event.
	(_mq_receive): Wait for mqi_waitrecv event.  Signal mqi_waitsend event.
	(mq_close): Close mqi_waitsend and mqi_waitrecv events.

2010-10-05  Corinna Vinschen  <corinna@vinschen.de>

	* path.h (enum pathconv_arg): Remove PC_CHECK_EA.

2010-10-02  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (dll_crt0_0): Move _main_tls initialization here.
	(__dll_crt0): Only initialize _main_tls if it changes.
	* fhandler_console.cc (fhandler_console::write): Fix debugging output.

2010-10-02  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_base::fstat_by_nfs_ea): Simplify.
	Just call nfs_fetch_fattr3 if called via fstat.
	* nfs.cc (nfs_fetch_fattr3): New function to fetch NFS fattr3 info from
	file handle.
	* nfs.h (nfs_fetch_fattr3): Declare.
	* path.cc (symlink_info::check): Simplify NFS case.  Just call
	nfs_fetch_fattr3.

2010-10-02  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_procsys.cc (fhandler_procsys::exists): Return virt_none
	if path is invalid.

2010-10-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* autoload.cc (std_dll_init): Add a retry loop.

2010-09-30  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.cc: Drop including nfs.h.
	* fhandler_disk_file.cc: Ditto.
	(fhandler_base::fstat_by_nfs_ea): Use fattr3 from path_conv member,
	unless called from fstat.
	* path.cc: Drop including nfs.h.
	(symlink_info::check): Rearrange definition of file info buffers.
	Fetch fattr3 info for files on NFS and store in conv_hdl for later
	use in fhandler_base::fstat_by_nfs_ea.  Use fattr3 file type to
	recognize symlink on NFS and try to fetch symlink target only for
	actual symlinks.
	* path.h: Include nfs.h.
	(class path_conv_handle): Change file info storage to union of
	FILE_NETWORK_OPEN_INFORMATION and fattr3 structures.
	(path_conv_handle::fnoi): Align to aforementioned change.
	(path_conv_handle::nfsattr): New method.
	(path_conv::nfsattr): New method.

2010-09-30  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check): Remove erroneous assumption about
	required permissions when reading NFS symlinks.

2010-09-29  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_tty.cc (fhandler_tty_slave::init): Revert to using
	tc->setpgid since previous change broke some use cases.

2010-09-28  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_tty.cc (fhandler_tty_slave::init): Add debugging.  Use
	tcsetpgrp to potentially set pgid since it is smarter about deciding if
	a process is in the background.
	* include/sys/cygwin.h (PID_ORPHANED): Actually delete as planned.
	(PID_NOTCYGWIN): Correctly define.

2010-09-28  Corinna Vinschen  <corinna@vinschen.de>

	* net.cc (getdomainname): Drop special case for NT4.

2010-09-28  Corinna Vinschen  <corinna@vinschen.de>

	Revert accidental previous login.

2010-09-28  Corinna Vinschen  <corinna@vinschen.de>

	* Makefile.in (DLL_IMPORTS): Remove libadvapi32.a.
	* autoload.cc: Add all advapi32 entry points.
	* mount.cc (mount_info::init): Read user fstab only if we have a
	username.
	* passwd.cc (pwdgrp::read_passwd): Only use username if we have one.
	* shared.cc (user_info::initialize): Set cb last so as not to override
	planned behaviour in pwdgrp::read_passwd.
	* uinfo.cc (cygheap_user::init): Fetch Windows username from environment
	variable $USERNAME.  Don't set name in cygheap if variable is empty.
	(internal_getlogin): If we still have no username, try GetUserNameW.

2010-09-28  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_pty_master::setup): Always create master
	thread.

2010-09-28  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (gethostid): Use correct path to ProductId registry value.

2010-09-27  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (fs_info::update): Remove erroneous NtClose on random handle
	value.

2010-09-26  Corinna Vinschen  <corinna@vinschen.de>

	* uinfo.cc (cygheap_user::init): Call GetUserNameW and convert to
	multibyte here so as not to rely on the current ANSI page.

2010-09-26  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (__main): Force signal synchronization.

2010-09-25  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_socket.cc (fhandler_socket::bind): Drop has_exclusiveaddruse
	condition.  Fix comment about availability.  Move remaining comment to
	the right spot.  Drop has_ip_helper_lib condition.
	* net.cc (cygwin_setsockopt): Drop has_disabled_user_tos_setting
	condition.  Fix comment.
	(get_2k_ifs): Fix comment.
	(get_nt_ifs): Remove.
	(getifaddrs): Drop call to get_nt_ifs.
	(get_ifconf): Ditto.
	* wincap.cc: Throughout, drop has_ip_helper_lib,
	has_disabled_user_tos_setting, and has_exclusiveaddruse settings from
	wincaps.
	(wincap_unknown): Remove.
	(wincap_nt4): Remove.
	(wincap_minimal): New macro, set to wincap_nt4sp4 for now.
	(wincapc::init): Drop test for pre-SP4 NT4.  Just imply at least NT SP4.
	Replace references to wincap_unknown with references to wincap_minimal.
	* wincap.h (struct wincaps): Drop has_ip_helper_lib,
	has_disabled_user_tos_setting, and has_exclusiveaddruse flags and
	methods.

2010-09-25  Corinna Vinschen  <corinna@vinschen.de>

	* autoload.cc: Throughout, order entry points alphabetically by DLL
	and function name.  Make functions which are available on all supported
	systems non-optional.  Fix return value on entry points imported from
	secur32.dll.  Add comment.
	(std_dll_init): Call fesetenv unconditionally.

2010-09-24  Christopher Faylor  <me+cygwin@cgf.cx>

	* autoload.cc (std_dll_init): Move dll_path closer to its use.  Use
	dll_path in fatal error.  Set ret values under lock control.
	* lib/minires.c (res_nsend): Fix compilation errors owing to pointer
	signedness.

2010-09-24  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.cc (fhandler_base::open): Handle query_write_dac flag.
	* fhandler.h (enum query_state): Add query_write_dac flag.
	* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Open file
	with query_write_dac instead of query_write_control.

2010-09-24  Corinna Vinschen  <corinna@vinschen.de>

	* errno.cc (errmap): Map ERROR_BAD_NET_RESP to ENOSYS.
	* fhandler_disk_file.cc (fhandler_disk_file::facl): Handle ENOSYS and
	point to  the explanation.
	* ntdll.h (STATUS_NOT_IMPLEMENTED): Define.
	* path.cc (symlink_info::check): Handle the inability of NT4 to use
	FileNetworkOpenInformation on share root dirs in either direction.
	* path.h (slash_unc_prefix_p): Remove unused declaration.
	* security.cc (get_info_from_sd): Handle ENOSYS from get_file_sd.
	Explain when this happens.

2010-09-23  Christopher Faylor  <me+cygwin@cgf.cx>

	* autoload.cc (std_dll_init): Use correct format type when displaying
	dll name in error output.

2010-09-21  Pierre Humblet <Pierre.Humblet@ieee.org>

	* libc/minires.c (res_nsend): Use the Windows resolver if appropriate.
	(dn_expand): Only set errno in case of error. Delete old comments.
	(dn_skipname): Fix typo in comment.

2010-09-21  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (cwdstuff::set): Replace constant 2 with sizeof(WCHAR) where
	appropriate.

2010-09-21  Corinna Vinschen  <corinna@vinschen.de>

	* mount.h (class fs_info): Add has_buggy_reopen flag and accessor
	methods.
	* mount.cc (fs_info::update): Set has_buggy_reopen flag for NWFS.
	Add comment.
	* path.h (path_conv::get_object_attr) Make inline method.
	(path_conv::init_reopen_attr): New inline method.
	* path.cc (path_conv::get_object_attr): Remove.
	* fhandler_disk_file.cc (fhandler_base::fstat_helper): Use
	path_conv::init_reopen_attr method to initialize OBJECT_ATTRIBUTE for
	reopening file.
	(fhandler_disk_file::fchmod): Ditto.
	(fhandler_base::utimens_fs): Ditto.
	(fhandler_disk_file::rewinddir): Ditto.
	* syscalls.cc (unlink_nt): Ditto.

2010-09-21  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.cc (fhandler_base::open): Always open NFS files with
	FILE_READ_EA, even when opening with O_WRONLY to allow fstat.
	* fhandler_disk_file.cc (fhandler_base::fstat_by_nfs_ea): Call
	FlushFileBuffers if file has been opened for writing.  Explain why.
	(fhandler_base::fstat_by_handle): Renew content of pc.fnoi if called
	via fstat.  Explain why.  Fix formatting.
	* path.cc (symlink_info::check): Try to open file the second time with
	FILE_READ_EA permissions since it's needed in later calls to
	fhandler_base::fstat_by_nfs_ea.

2010-09-20  Christopher Faylor  <me+cygwin@cgf.cx>

	* include/sys/cygwin.h (PID_NOTCYGWIN): New enum.
	* spawn.cc (spawn_guts): Set a flag when a process is not a cygwin
	process.
	* fhandler_tty.cc (fhandler_tty_slave::init): Remove previous change.
	Try a different method to determine when we should become the process
	group owner.
	* signal.cc (kill0): Remove archaic code which dealt with never-set
	flag.

2010-09-20  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_tty.cc (fhandler_tty_slave::init): Add additional checks to
	determine when a process should grab control of a tty's pgid.  Use
	being_debugged() for consistency.
	* debug.h (being_debugged): Remove vestige of win9x accommodation.

2010-09-19  Christopher Faylor  <me+cygwin@cgf.cx>

	* wincap.h (wincaps::has_buggy_thread_startup): Declare.
	(wincapc::has_buggy_thread_startup): Ditto.
	* wincap.cc::wincap_*): Accommodate has_buggy_thread_startup. 
	(wincapc::init): Explicitly turn off has_buggy_thread_startup if not
	WOW64.
	* cygthread.h (cygthread::thread_handle): Declare/define new method.
	* dcrt0.cc (_dll_crt0): Don't call __sinit here.
	(dll_crt0_0): Don't call sigproc_init during initialization
	if wincap.has_buggy_thread_startup().
	(dll_crt0_1): Defer sigproc_init to here when
	wincap.has_buggy_thread_startup().  Call __sinit after we've determined
	that we're not forking.
	(__main): Rework comments.  Add potential future reminder.

2010-09-15  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Fetch number
	of links and inode number only if path has good inodes.
	(fhandler_base::fstat_by_name): Fetch inode number only if path has
	good inodes.

2010-09-14  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check): Make sure AllocationSize and EndOfFile
	are stored in the right order when fetching the info from the
	NtQueryDirectoryFile result.

2010-09-13  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_process.cc (get_mem_values): Simplify code.  Fix
	NtQueryVirtualMemory loop so it handles memory allocation gracefully.
	Always set errno to a useful value.

2010-09-13  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.h (class fhandler_base): Change inheritance of fstat_helper
	and fstat_by_...  methods to private.
	(fhandler_base::fstat_helper): Drop all redundant arguments.
	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Drop call
	to fstat_by_nfs_ea here.  Drop fetching basic file information.
	Drop setting file attributes.  Accommodate change in fstat_helper call.
	(fhandler_base::fstat_by_name): Simplify.  Only fetch directory
	information to get the inode number.  Drop setting file attributes.
	Accommodate change in fstat_helper call.
	(fhandler_base::fstat_fs): Call fstat_by_nfs_ea if on NFS.
	(fhandler_base::fstat_helper): Drop all redundant arguments.  Use
	information already collected in the fhandler.  Move heading comment
	into code and drop dwFileAttributes comment.
	* mmap.cc (mmap64): Call fstat_fs rather than fstat_by_handle.
	* mount.cc (fs_info::update): Note that has_buggy_basic_info is unused.
	* path.cc (symlink_info::check_reparse_point): Add comment.
	(symlink_info::check): Fetch FileNetworkOpenInformation rather than
	FileBasicInformation throughout, except on NFS.  Explain why.  Store
	FILE_NETWORK_OPEN_INFORMATION in conv_hdl.  Remove
	FILE_ATTRIBUTE_DIRECTORY attribute in conv_hdl for reparse point
	symlinks.
	* path.h (class path_conv_handle): Add FILE_NETWORK_OPEN_INFORMATION
	member _fnoi.
	(path_conv_handle::fnoi): New accessor method for _fnoi.
	(path_conv::fnoi): New accessor method for cubv_hdl._fnoi.

	* fhandler_tty.cc (fhandler_tty_slave::init): Use tty::setpgid method.

2010-09-12  Corinna Vinschen  <corinna@vinschen.de>

	* sec_acl.cc (acl_worker): Remove.
	(acl32): Implement acl_worker functionality here.
	(lacl32): Just return -1 with errno set to ENOSYS.
	(lacl): Ditto.
	* include/cygwin/acl.h (lacl): Remove this call.

2010-09-12  Christopher Faylor  <me+cygwin@cgf.cx>

	* sigproc.cc (sig_dispatch_pending): Remove debugging statement.
	(sigproc_init): Wrap a long line.

2010-09-12  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygthread.h (cygthread::cygthread): Reorganize slightly.
	* dcrt0.cc (dll_crt0_0): Move sigproc initialization later to ensure
	everything we need has been set up.
	(dll_crt0_1): Streamline some logic slightly.
	* sigproc.cc (no_signals_available): Add back dropped test for macro
	parameter.
	* fhandler_console.cc (fhandler_console::write): Show a little bit of
	what's being written to the console in debugging output.

2010-09-12  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (start_transaction): Make inline function.  Move up to be
	more generally available.
	(stop_transaction): Ditto.
	(unlink_nt): Potentially start transaction when trying to delete file
	with DOS R/O attribute set.  If file is .lnk symlink, check for number
	of hardlinks.  Add "out" label and only return via "out".  Rearrange
	reversion of DOS R/O attribute and, on success, only revert R/O
	attribute if file is .lnk symlink with more than one hardlink.  Add
	length comment to explain why.

2010-09-11  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_disk_file::rmdir): More thoroughly
	check the existence condition on remote drives.  Enhance comment.

2010-09-11  Dave Korn  <dave.korn.cygwin@gmail.com>

	* Makefile.in (DLL_OFILES): Add new fenv.o module.
	(fenv_CFLAGS): New flags definition for fenv.o compile.
	* autoload.cc (std_dll_init): Use fenv.h functions instead of direct
	manipulation of x87 FPU registers.
	* crt0.c (mainCRTStartup): Likewise.
	* cygwin.din (feclearexcept, fegetexceptflag, feraiseexcept,
	fesetexceptflag, fetestexcept, fegetround, fesetround, fegetenv,
	feholdexcept, fesetenv, feupdateenv, fegetprec, fesetprec,
	feenableexcept, fedisableexcept, fegetexcept, _feinitialise,
	_fe_dfl_env, _fe_nomask_env): Export new functions and data items.
	* fenv.cc: New file.
	* posix.sgml: Update status of newly-implemented APIs.
	* include/fenv.h: Likewise related header.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.

2010-09-10  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (rename): Limit retry loop in case of sharing violation
	to about a second.

2010-09-10  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (fstatat): Call stat_worker directly from here.

2010-09-10  Corinna Vinschen  <corinna@vinschen.de>

	* flock.cc (allow_others_to_sync): Define MAX_PROCESS_SD_SIZE.  Use
	instead of ACL_DEFAULT_SIZE.
	* sec_acl.cc (setacl): Use TLS buffer to allow maximum ACL size.
	* security.h (ACL_DEFAULT_SIZE): Drop definition.
	(ACL_MAXIMUM_SIZE): Define.
	(SD_MAXIMUM_SIZE): Define.
	* security.cc (get_file_sd): Allocate security_decscriptor with size
	SD_MAXIMUM_SIZE.
	(alloc_sd): Use TLS buffer to allow maximum ACL size.

2010-09-10  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (class fs_info_cache): New class to cache filesystem
	information.
	(fs_info::update): Check FileFsVolumeInformation against filesystem
	cache and use it, if filesystem is already available.  Add filesystem
	to cache, if not.  Only request FileFsObjectIdInformation if
	FILE_SUPPORTS_OBJECT_IDS is set in filesystem flags.
	* ntdll.h (struct _FILE_FS_VOLUME_INFORMATION): Add pragma pack so the
	structure size is matching the OS expectations.  Add __dummy member
	used in filesystem cache.

2010-09-10  Corinna Vinschen  <corinna@vinschen.de>

	* security.cc (get_file_sd): Add bool parameter justcreated.  Use
	GetSecurityInfo only if justcreated is true, NtQuerySecurityObject
	otherwise.  Add comment to explain why.  Don't waste time to call
	NtQuerySecurityObject twice, just allocate big enough area.
	(get_file_attribute): Call get_file_sd with justcreated set to false.
	(set_file_attribute): Call get_file_sd with justcreated depending on
	S_JUSTCREATED pseudo file attribute.
	(check_file_access): Call get_file_sd with justcreated set to false.
	* sec_acl.cc (setacl): Ditto.
	(getacl): Ditto.
	* security.h: Convert many functions to regparm functions.
	(get_file_sd): Declare with extra bool parameter.

2010-09-10  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_procsys.cc (fhandler_procsys::exists): Rearrange to handle
	dangling symlinks correctly.  Fix comments.
	(fhandler_procsys::fill_filebuf): Remove useless comment.

2010-09-08  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_procsys.cc (fhandler_procsys::open): Simplify by just
	calling fhandler_base::open.

2010-09-06  Corinna Vinschen  <corinna@vinschen.de>

	* Makefile.in (DLL_OFILES): Add fhandler_procsys.o.
	* devices.h (enum fh_devices): Add FH_PROCSYS.
	* devices.in (dev_procsys_storage): New device.
	* devices.cc: Regenerate.
	* dtable.cc (build_fh_pc): Add code to allocate fhandler_procsys.
	* fhandler.h (proc_len): Convert to size_t.
	(procsys): Declare.
	(procsys_len): Declare.
	(enum virtual_ftype_t): Move here from fhandler_virtual.h.
	Add members supported by fhandler_procsys.
	(fhandler_virtual::exists): Return virtual_ftype_t.  Change
	in all derived classes.
	(class fhandler_procsys): New class.
	(fhandler_union): Add fhandler_procnet and fhandler_procsys members.
	* fhandler_disk_file.cc (__DIR_mounts::check_missing_mount): Use
	ro_u_proc.
	(fhandler_base::fstat_by_handle): Don't copy attributes if file is an
	NT device.
	(fhandler_base::fstat_by_name): Ditto.
	* fhandler_netdrive.cc (fhandler_netdrive::exists): Return
	virtual_ftype_t.
	* fhandler_proc.cc (proc_tab): Sort alphabetically.  Use _VN macro
	to store length.
	(proc_len): Change to size_t.
	(proc_tab_cmp): New static function.
	(virt_tab_search): New function to search entry in virt_tab_t
	arrays.  Use throughout in /proc and sibling classes instead of
	loop.
	(fhandler_proc::exists): Return virtual_ftype_t.
	* fhandler_process.cc (process_tab): Sort alphabetically.  Use _VN
	macro to store length.
	(fhandler_process::exists): Return virtual_ftype_t.
	(fhandler_process::open): Simplify code.
	* fhandler_procnet.cc (procnet_tab): Sort alphabetically.  Use _VN
	macro to store length.
	(fhandler_procnet::exists): Return virtual_ftype_t.
	(fhandler_procnet::open): Simplify.
	* fhandler_procsys.cc: New file.
	* fhandler_registry.cc (fhandler_registry::exists): Return
	virtual_ftype_t.
	* fhandler_virtual.cc (fhandler_virtual::exists): Ditto.
	* fhandler_virtual.h (enum virtual_ftype_t): Move to fhandler.h.
	(virt_tab_t): Add name_len member.
	(_VN): New macro.
	(virt_tab_search): Declare.
	* mount.cc (mount_info::conv_to_win32_path): Fix comment.  Backslashify
	isprocsys_dev paths.
	* ntdll.h (STATUS_OBJECT_TYPE_MISMATCH): Define
	(STATUS_INSTANCE_NOT_AVAILABLE): Define.
	(STATUS_PIPE_NOT_AVAILABLE): Define.
	(STATUS_INVALID_PIPE_STATE): Define.
	(STATUS_PIPE_BUSY): Define.
	(SYMBOLIC_LINK_QUERY): Define.
	(NtOpenSymbolicLinkObject): Declare.
	(NtQuerySymbolicLinkObject): Declare.
	* path.cc (path_conv::check): Accommodate fact that exists method
	returns virtual_ftype_t now.  Add cases for new virtual_ftype_t
	types.
	(cygwin_conv_path): Add GLOBALROOT prefix to native device paths.
	Make sure to strip \\?\ prefix only for actual filesystem-based
	paths, not for all paths.
	* path.h (isproc_dev): Add FH_PROCSYS.
	(isprocsys_dev): Define.

2010-09-04  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (mount_info::from_fstab_line): Reorder to make sure all
	mounts from user fstab are user mounts.
	(mount): Make sure all mounts are user mounts, even those added via
	mount -a.

2010-09-02  Christopher Faylor  <me+cygwin@cgf.cx>

	* sigproc.cc (sigproc_init): Use American spelling in comment.

2010-09-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (dll_crt0_0): Remove myself settings.
	* fork.cc (fork): Set myself process_state.
	* pinfo.cc (pinfo_init): Ditto.
	(pinfo::thisproc): Make sure any sendsig setting is correctly copied.
	* pinfo.h: Update copyright.  Remove unused code.

2010-09-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygthread.cc (cygthread::create): Fix incorrect use of name rather
	than __name.
	* cygthread.h (cygthread::cygthread): Create versions which eliminate
	'n' parameter.
	* dcrt0.cc (dll_crt0_1): Remove check for threadfunc_ix.  Remove
	obsolete comments.  Set process_state to active here.
	* fhandler_netdrive.cc (create_thread_and_wait): Use shortened
	cygthread constructor.
	* timer.cc (timer_tracker::settime): Ditto.
	* window.cc (HWND): Ditto.
	* fhandler_tty.cc: Use shortened cygthread constructor, where
	appropriate, throughout.
	* select.cc: Ditto.
	* fork.cc (frok::child): Remove wait_for_sigthread.
	(fork): Reformat if for slightly better clarity.
	* init.cc (dll_finished_loading): New variable.
	(dll_entry): Use dll_finished_loading to determine when we should call
	merge_threadfunc.
	* sigproc.cc (no_signals_available): Simplify by using my_readsig.
	(wait_sig_inited): Delete.
	(wait_sig): Define as void function.
	(pending_signals): Accommodate change to wait_sig definition.
	(wait_for_sigthread): Delete definition.
	(sigproc_init): Initialize signal pipe here, before wait_sig thread is
	created.  Use void form of cygthread creation.
	(init_sig_pipe): Delete.
	(wait_sig): Return void rather than DWORD.  Assume previous
	initialization of signal pipe.  Set my_sendsig to NULL when exiting.
	* sigproc.h (wait_for_sigthread): Delete declaration.

2010-09-01  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_netdrive.cc (fhandler_netdrive::readdir): Set d_type.
	(fhandler_netdrive::seekdir): Fix test for readdir return value.
	* fhandler_registry.cc (fhandler_registry::seekdir): Ditto.

2010-09-01  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Bump DLL minor version number to 8.

2010-08-31  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (normalize_posix_path): Preserve //./ and //?/ prefixes.
	(path_conv::check): Allow access to root directory of native NT disk
	devices.

2010-08-31  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Bump DLL minor version number to 7.

2010-08-30  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (dll_crt0_0): Move sigproc_init later, after cygheap
	initialization since it relies on the cygheap existing (even if
	it shouldn't matter due to dll initialization serialization).

2010-08-30  Corinna Vinschen  <corinna@vinschen.de>

	* posix.sgml (std-notes): Fix typos and incorrectnesses.

2010-08-30  Corinna Vinschen  <corinna@vinschen.de>

	* autoload.cc (MsgWaitForMultipleObjectsEx): Define.
	(MsgWaitForMultipleObjects): Remove.
	* select.cc (select_stuff::wait): Use MsgWaitForMultipleObjectsEx with
	QS_ALLPOSTMESSAGE and, if possible, MWMO_INPUTAVAILABLE flags.  Explain
	why.  Fix a potential crash due to a NULL pointer in WAIT_FAILED case.
	(peek_windows): Use filter pattern on NT4.  Explain why.
	* wincap.h (wincaps::has_mwmo_inputavailable): New element.
	* wincap.cc: Implement above element throughout.

2010-08-29  Christopher Faylor  <me+cygwin@cgf.cx>

	* winlean.h: New file.
	* automode.c: Use "winlean.h".
	* binmode.c: Ditto.
	* gmon.c: Ditto.
	* textmode.c: Ditto.
	* textreadmode.c: Ditto.
	* winsup.h: Ditto.
	* lib/cygwin_attach_dll.c: Ditto.
	* lib/dll_main.cc: Ditto.
	* profile.c: Ditto.
	* crt0.c: Ditto.  Cleanup ancient cruft.  Add dummy calls to
	cygwin_premain*.
	* include/sys/cygwin.h: Remove old stuff.  Move premain declarations
	nearer to other cygwin-specific function declarations.
	* globals.cc: Add comment.

2010-08-28  Corinna Vinschen  <corinna@vinschen.de>

	* autoload.cc (LoadDLLprime): Change dllname storage to string16.
	(struct dll_info): Convert name to WCHAR.
	(std_dll_init): Load DLLs with full path to windows system directory.
	Add hint to Microsoft security advisory.
	* dcrt0.cc (init_windows_system_directory): New function.
	(dll_crt0_0): Call init_windows_system_directory first.
	* exceptions.cc (windows_system_directory): Move to globals.cc.
	(windows_system_directory_length): Ditto.
	(events_init): Drop code fetching windows_system_directory.
	* globals.cc (windows_system_directory): New global variable.
	(windows_system_directory_length): Ditto.
	* net.cc (load_ipv6_funcs): Use windows_system_directory rather than
	GetSystemDirectoryW.
	* netdb.cc (open_system_file): Ditto.  Simplify debug output.

2010-08-27  Corinna Vinschen  <corinna@vinschen.de>

	* external.cc (sync_wincwd): Remove.
	(cygwin_internal): Drop CW_SYNC_WINCWD case.
	* globals.cc (ro_u_pipedir): New R/O unicode string.
	* ntdll.h (RtlSetCurrentDirectory_U): Declare.
	* path.cc (cwdstuff::set): Improve comments.  Drop setting Win32 CWD to
	\\?\PIPE\ on init.  Keep Win32 CWD in sync, if possible.  Set to
	\\?\PIPE\ otherwise.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Revert to 230.
	* include/sys/cygwin.h (cygwin_getinfo_types): Remove CW_SYNC_WINCWD.

2010-08-27  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_proc.cc (format_proc_partitions): Improve comment.

2010-08-26  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_proc.cc (format_proc_partitions): Simplify code and enable
	partition layout printing for non-privileged users.

2010-08-25  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (fs_info::update): Fix comments.

2010-08-25  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (rename): Open file with FILE_READ_ATTRIBUTES.

2010-08-24  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Fix comment.

2010-08-24  Corinna Vinschen  <corinna@vinschen.de>

	* external.cc (cygwin_internal): In CW_CVT_MNT_OPTS case, initialize
	flags with *pflags to restore original behaviour.

2010-08-21  Corinna Vinschen  <corinna@vinschen.de>

	* Makefile.in (DLL_IMPORTS): Link against advapi32.a before kernel32.a.

2010-08-20  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygthread.cc: Update copyright.

2010-08-20  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (path_conv::check): Close handle in conv_handle if we're
	following a symlink.

2010-08-20  Pedro Izecksohn <pedro.izecksohn@gmail.com>

	* endian.h (htobe16, htobe32, htobe64, be16toh, be32toh, be64toh,
	htole16, htole32, htole64, le16toh, le32toh, le64toh): Define.

2010-08-20  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (readdir_check_reparse_point): Rename from
	is_volume_mountpoint.  Return valid d_type value for underlying
	reparse point type.
	(readdir_get_ino): Don't rely on the handle set in pc.check.  Open
	file here if pc.handle() is NULL.
	(fhandler_disk_file::readdir_helper): Try to set a correct d_type value
	more diligent.
	(fhandler_disk_file::readdir): Don't reset dirent_set_d_ino unless
	we're really sure it's due to an untrusted FS.  Simplify usage of
	FileAttributes, which is 0 if buf is NULL, anyway.  Set d_type
	correctly for faked "." and ".." entries.  Improve debug output.
	* path.cc (symlink_info::check): Don't keep handle to volume mount
	point open.  Explain why.

2010-08-20  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_disk_file::fstatvfs): Revert usage
	of get_stat_handle () to get_handle ().  Add comment to explain why.
	* syscalls.cc (statvfs): Drop using PC_KEEP_HANDLE.

2010-08-19  Corinna Vinschen  <corinna@vinschen.de>

	* external.cc (sync_wincwd): New function.
	(cygwin_internal): Rename CW_SETCWD to CW_SYNC_WINCWD.  Call
	sync_wincwd from here.
	* include/sys/cygwin.h (cygwin_getinfo_types): Rename CW_SETCWD to
	CW_SYNC_WINCWD.

2010-08-18  Christopher Faylor  <me+cygwin@cgf.cx>

	* external.cc (CW_SETCWD): New option.
	* include/cygwin/version.h: Bump api minor to 231.
	* include/sys/cygwin.h (CW_SETCWD): Define.

2010-08-18  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (rename): Fix renaming file-based devices.

2010-08-18  Corinna Vinschen  <corinna@vinschen.de>

	* exceptions.cc (open_stackdumpfile): Don't try to open file if we
	have no filesystem based CWD.  Add comment.
	* path.cc (cwdstuff::set): Set CWD handle to NULL if CWD is a virtual
	path.  Simplify matching comment.

2010-08-18  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_base::fstat_helper): Set st_rdev
	to correct device number for fs_special devices.

2010-08-16  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Bump DLL minor version number to 6.

2010-08-14  Corinna Vinschen  <corinna@vinschen.de>

	* pipe.cc (fhandler_pipe::open): Duplicate content of opened pipe
	fhandler before calling dup method.

2010-08-13  Corinna Vinschen  <corinna@vinschen.de>

	* cygheap.h (class cwdstuff): Make drive_length private.
	Add "error" member.
	(cwdstuff::get_error): New inline method.
	(cwdstuff::get_error_desc): Declare.
	(cwdstuff::set): Change first parameter to pointer to path_conv.
	* path.cc (chdir): Drop doit.  Align call to cwdstuff::set to
	new arguments.
	(cwdstuff::init): Only call cwdstuff::set if it's not already
	initialized.  Add comment.  Drop third parameter in call to
	cwdstuff::set.
	(cwdstuff::set): Partially rewrite.  Add lots of comments to explain
	everything.  Drop "doit" since it's not used anymore.  Always create
	new handle to CWD if not in a virtual path.  Drop PEB locking when
	reading PEB values in init phase.  Check for accessibility to set
	correct error code.  Drop Vista workaround.  Never write back into PEB. 
	Set Win32 CWD to \\?\PIPE\ on init.  Simplify creation of win32 path. 
	Set new error member to a meaningful value.
	(cwdstuff::get_error_desc): New method to generate error message
	from cwd error code.
	* spawn.cc (spawn_guts): Call cwdstuff::get_error_desc to create
	more meaningful error message when not being able to start native
	Win32 app due to CWD restrictions.  When starting native Win32 app,
	lock cwd and use in calls to CreateProcessW/CreateProcessAsUserW.

2010-08-11  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (struct opt): Add "bind" option.
	(mount_info::from_fstab_line): Handle "bind" option.
	(fillout_mntent): Add "bind" option to mnt_opts.
	(mount): Handle "bind" option.
	* include/sys/mount.h (MOUNT_BIND): New mount flag.

2010-08-10  Christopher Faylor  <me+cygwin@cgf.cx>

	* sigproc.cc (init_sig_pipe): Add retry loop.

2010-08-09  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygheap.h (cygheap_fdmanip): Delete fh and use fd index into
	cygheap->fdtab throughout.
	(cygheap_fdnew): Replace fh by using fd index into cygheap->fdtab
	throughout.  (cygheap_fdget): Ditto.  (cygheap_fdenum): Ditto.

2010-08-09  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>

	Implement POSIX.1-2004 Monotonic Clock.
	* hires.h: Change hires_us to hires_ns, with nanosecond resolution.
	(hires_ns::primed_ft): Remove.
	(hires_ns::nsecs): New prototype.
	(hires_ns::usecs): Rewrite in terms of nsecs.
	(hires_ns::resolution): New prototype.
	* times.cc: Change hires_us to hires_ns.
	(ntod): Declare.
	(systime): Remove.
	(hires_ns::prime): Increase resolution to nanoseconds.
	(hires_ns::nsecs): Rename usecs to nsecs to reflect increased resolution.
	Remove justdelta argument.
	(hires_ns::resolution): New function.
	(clock_gettime): Accept CLOCK_MONOTONIC.
	Use EINVAL instead of ENOSYS per POSIX.1-2004.
	(clock_getres): Ditto.
	(clock_setres): Use EINVAL instead of ENOSYS to conform with other
	implementations.
	* strace.cc (strace::microseconds): Adjust for hires_ns.
	* sysconf.cc (sca): Set _SC_MONOTONIC_CLOCK to _POSIX_MONOTONIC_CLOCK.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.

2010-08-09  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>

	* fhandler_proc.cc: Add /proc/filesystems virtual file.
	(format_proc_filesystems): New function.
	* mount.cc (fs_names): Move to global scope. Redefine as array
	of { "name", block_device? } structs.
	(fillout_mntent): Use name member of fs_names.
	* mount.h (fs_names): New prototype.

2010-08-09  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>

	* include/dlfcn.h (RTLD_LOCAL): Define.

2010-08-06  Corinna Vinschen  <corinna@vinschen.de>

	* include/sys/dirent.h (d_fileno): Define as d_ino.

2010-08-04  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (cygwin_conv_path): Rearrange test for "." in POSIX to
	relative DOS path conversion.  Simplify fixing the path.
	In CCP_POSIX_TO_WIN_W conversion, always drop long path prefix if path
	fits into MAX_PATH.  Explain why.

2010-08-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* exceptions.cc (_cygtls::interrupt_now): Revert to checking for
	"spinning" when choosing to defer signal.
	(_cygtls::call_signal_handler): Grab func when we have the lock.
	* gendef: Update copyright.
	(__sigbe): Simplify slightly.
	(_sigdelayed): Grab a lock before manipulating stuff.
	(_cygtls::pop): Properly return popped value.
	(stabilize_sig_stack): Set incyg when we have the lock.
	* sigproc.cc: Update copyright.

2010-07-28  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygthread.h (LPVOID_THREAD_START_ROUTINE): Define.
	(cygthread::create): Rename from cygthread::cygthread.
	(cygthread::cygthread): Define new constructor which accepts
	LPVOID_THREAD_START_ROUTINE as the first argument.  Call
	cygthread::create.
	* cygthread.cc (cygthread::create): Rename from cygthread::cygthread.
	Use 'arglen' rather than 'n' since 'n' is no longer supplied.
	* fhandler_tty.cc (process_input): Define as void/noreturn.
	(process_output): Ditto.
	(process_ioctl): Ditto.
	(fhandler_tty_master::init): Don't "zap_h" cygthreads which are
	noreturn.  It's now implied.

2010-07-23  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.cc (fhandler_base::raw_write): Remove STATUS_DISK_FULL
	special handling.

2010-07-19  Eric Blake  <eblake@redhat.com>

	* mktemp.cc (_gettemp): Add flags argument.  All callers updated.
	(mkostemp, mkostemps): New functions.
	* cygwin.din (mkostemp, mkostemps): Export.
	* posix.sgml: Document them.
	* include/cygwin/version.h: Bump version.

2010-07-18  Christopher Faylor  <me+cygwin@cgf.cx>

	* autoload.cc (noload): Use "pushl" rather than "push".

2010-07-18  Christopher Faylor  <me+cygwin@cgf.cx>

	* exceptions.cc (_cygtls::interrupt_now): Avoid nonsensical tests which
	delay an interrupt.
	(setup_handler): Remove unneeded DEBUGGING handling.  Ensure that stack
	is locked when we are about to do push/pop to it.  Fix debugging output.

2010-07-18  Christopher Faylor  <me+cygwin@cgf.cx>

	* gendef: Throughout, remove lock from xchgl since it is implied.
	(__ZN7_cygtls3popEv): Avoid potential (but probably nonexistent) race
	when clearing element after pop.

2010-07-15  Corinna Vinschen  <corinna@vinschen.de>

	* wincap.cc (wincap_7): Set needs_count_in_si_lpres2 to false.

2010-07-07  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (unlink_nt): Disable try_to_bin for netapp drives.
	Explain why.

2010-07-05  Corinna Vinschen  <corinna@vinschen.de>

	Align seekdir and telldir API to POSIX definition.
	* Makefile.in (NEW_FUNCTIONS): Remove seekdir and telldir mappings.
	* dir.cc (telldir): Move functionality from telldir64 here.  Use
	long, rather than _off_t.
	(telldir64): Just call telldir.  Only keep for backward compatibility.
	(seekdir): Move functionality from seekdir64 here.  Use long, rather
	than _off_t.
	(seekdir64): Just call seekdir.  Only keep for backward compatibility.
	* fhandler.h: Throughout, change prototypes of seekdir and telldir
	methods to use long, rather than _off64_t.
	* fhandler_disk_file.cc: Change aforementioned methods accordingly.
	* fhandler_netdrive.cc: Ditto.
	* fhandler_registry.cc: Ditto.
	* fhandler_virtual.cc: Ditto.
	* include/sys/dirent.h (struct __DIR): Change __d_position from
	_off_t to long to reflect API change.
	(telldir): Change prototype to use long, rather than off_t.
	(seekdir): Ditto.

2010-07-04  Christopher Faylor  <me+cygwin@cgf.cx>

	* path.cc (path_conv::check): Move fs-specific settings to a point
	where we know that we have filled out the filesystem information.
	* path.h (path_conv::path_conv): Use consistent initialization for
	constructors.

	* include/sys/cygwin.h: Define CW_STRERROR.
	* include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 228.
	* include/external.h: Implement CW_STRERROR.

2010-07-02  Corinna Vinschen  <corinna@vinschen.de>

	* net.cc (cygwin_getsockopt): Make sure SO_PEERCRED is only handled
	in level SOL_SOCKET.  Workaround a return value regression in Vista
	and later.  Add comment to explain.

2010-06-29  Corinna Vinschen  <corinna@vinschen.de>

	* spawn.cc (spawn_guts): Reinstantiate a FIXME comment.

2010-06-29  Corinna Vinschen  <corinna@vinschen.de>

	* exceptions.cc (dump_exception): Use %W instead of %s for printing
	progname.
	* fork.cc (frok::parent): Fix typos in debug output.
	* spawn.cc (spawn_guts): Copy wide Win32 filename into _pinfo::progname,
	rather than native NT name.  Use %W instead of %S for printing progname.

2010-06-28  Christopher Faylor  <me+cygwin@cgf.cx>

	* fork.cc (frok::parent): Improve error message.

2010-06-22  Corinna Vinschen  <corinna@vinschen.de>

	* flock.cc (allow_others_to_sync): Use small stack buffer rather
	than big temp buffer.  Fix typo in comment.
	(lf_setlock): Revert to using tmp_pathbuf.
	(lf_getlock): Ditto.

2010-06-22  Corinna Vinschen  <corinna@vinschen.de>

	* sec_acl.cc (setacl): Use the long time unused ACL_DEFAULT_SIZE
	instead of a constant value.
	* security.cc (alloc_sd): Ditto.

2010-06-21  Christopher Faylor  <me+cygwin@cgf.cx>

	* tmpbuf.h: New file.
	* flock.cc: Include tmpbuf.h for new tmpbuf functionality.
	(allow_others_to_sync): Use tmpbuf rather than tmp_pathbuf.  Explain
	why.
	(lf_setlock): For consistency, use tmpbuf rather than tmp_pathbuf.
	(lf_getlock): Ditto.

2010-06-21  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (__api_fatal): Temporarily generate a stackdump.

2010-06-21  Christopher Faylor  <me+cygwin@cgf.cx>

	* tls_pbuf.cc (tmp_pathbuf::w_get): Report what's failing when too many
	buffers are in use.

2010-06-17  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Fetch stat
	handle only after checking for NFS.

2010-06-15  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_base::fstat_by_nfs_ea): Use handle
	returned by get_stat_handle.
	(fhandler_base::fstat_helper): Reinstatiate code to re-open the file
	when checking for executability if called via fstat.  Explain why.

2010-06-15  Corinna Vinschen  <corinna@vinschen.de>

	* dtable.cc (dtable::dup_worker): Reset path_conv handle in duplicated
	fhandler.
	* fhandler.cc (fhandler_base::fstatvfs): Keep handle in created
	path_conv.
	* fhandler.h (fhandler_base::get_stat_access): New method.
	(fhandler_base::get_stat_handle): New method.
	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Use handle
	returned by get_stat_handle.  Only request inode from system if it
	isn't already set in the fhandler, and only for filesystems supporting
	them.
	(fhandler_base::fstat_fs): Use handle returned by get_stat_handle.
	Change the way open_fs is called.  Explain why.
	(fhandler_base::fstat_helper): Use handle returned by get_stat_handle.
	Never use 0 inode number.  Simplify executable recognition by re-using
	get_stat_handle if file could be opened with sufficient rights.
	(fhandler_disk_file::fstatvfs): Use handle returned by get_stat_handle.
	(fhandler_disk_file::facl): Use handle returned by get_stat_handle in
	GETACL and GETACLCNT cases.
	(fhandler_disk_file::link): Use handle returned by get_stat_handle
	instead of opening file here again.  Add comment.
	(readdir_get_ino): Keep handle in created path_conv and drop
	opening file.
	* ntdll.h (wait_pending): New helper function.
	* path.cc (symlink_info::check): Drop unused 'opt' parameter from
	declaration.  Add path_conv_handle argument.
	(path_conv::check): Make sure conv_handle is closed.  Keep
	PC_KEEP_HANDLE flag in pflags_or.  Accommodate call to sym.check to
	new args.
	(path_conv::~path_conv): Close conv_handle.
	(symlink_info::check_shortcut): Don't re-open file here, just use
	incoming handle.  Drop goto's and label out.
	(symlink_info::check_sysfile): Don't re-open file here, just use
	incoming handle.  Keep track of file position to accommodate the fact
	that file has been opened asynchronously in calling function.
	(symlink_info::check_nfs_symlink): Don't re-open file here, just use
	incoming handle.
	(symlink_info::check): Drop unused 'opt' parameter.  Add
	path_conv_handle argument.  Always try to open file with GENERIC_READ
	rights first to allow reading file content w/o having to re-open the
	file.  Drop back to READ_CONTROL | FILE_READ_ATTRIBUTES otherwise.
	Call symlink test functions (except for check_reparse_point) only if
	file could be opened with GENERIC_READ.  Keep file handle open if
	PC_KEEP_HANDLE is set in pflags.
	* path.h (enum pathconv_arg): Add PC_KEEP_HANDLE flag.
	(class path_conv_handle): New class.
	(class path_conv): Add conv_handle member.
	(path_conv::operator =): Duplicate conv_handle.
	(path_conv::handle): New method.
	(path_conv::access): New method.
	(path_conv::reset_conv_handle): New method.
	(path_conv::close_conv_handle): New method.

2010-06-15  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_disk_file::fstatvfs): Fix indentation.

2010-06-15  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (path_conv::get_ino_by_handle): Convert from
	static function to path_conv method.  Accommodate throughout.
	(path_conv::ndisk_links): Unused, comment out.
	* path.h (path_conv::get_ino_by_handle): Declare.
	(path_conv::ndisk_links): Comment out declaration.

2010-06-14  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (path_conv::check): Return with ENOTDIR if component is a
	device.

2010-06-14  Corinna Vinschen  <corinna@vinschen.de>

	* dlfcn.cc (get_full_path_of_dll): Revert patch from 2010-04-29.

2010-06-12  Christopher Faylor  <me+cygwin@cgf.cx>

	* times.cc (gtod): Move to sharable region.

2010-06-09  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check_shortcut): Use ro_u_empty rather than
	local UNICODE_STRING object.
	(symlink_info::check_sysfile): Ditto.  Return immediately if NtOpenFile
	failed to avoid closing random handle.  Improve debug output in case
	NtReadFile failed.

2010-06-08  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check): Set h to NULL after closing handle
	in udf check.  Remove overagressive bracketing.  Don't set h to NULL
	without closing the handle.  Fix using wrong handle in checking
	file system when using parent directory handle.

2010-06-07  Corinna Vinschen  <corinna@vinschen.de>

	* include/sys/stdio.h: Remove _GNU_SOURCE guard around getline
	and getdelim prototypes since they are SUSv4 now.

2010-06-02  Corinna Vinschen  <corinna@vinschen.de>

	* ntdll.h (STATUS_BAD_NETWORK_PATH): Define.
	(STATUS_BAD_NETWORK_NAME): Define.
	* path.cc (symlink_info::check): Convert STATUS_BAD_NETWORK_PATH and
	STATUS_BAD_NETWORK_NAME into an immediate ENOENT.

2010-06-01  Corinna Vinschen  <corinna@vinschen.de>

	* exceptions.cc (open_stackdumpfile): Correctly append .stackdump
	suffix.

	* nlsfuncs.cc (rebase_locale_buf): Reorder arguments.  Accommodate
	throughout.  Add pointer to end of buffer and avoid changing pointers
	not pointing into the buffer.

2010-06-01  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_netdrive.cc (fhandler_netdrive::exists): Always free WNet
	resource if created.

2010-05-31  Corinna Vinschen  <corinna@vinschen.de>

	* cygheap.cc (cygheap_user::set_name): Allow to change the user name
	if it only differs by case.

2010-05-26  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_registry.cc (multi_wcstombs): New function.
	(fhandler_registry::fstat): Call multi_wcstombs for strings of type
	REG_MULTI_SZ.
	(fhandler_registry::fill_filebuf): Ditto.

2010-05-26  Christopher Faylor  <me+cygwin@cgf.cx>

	* hires.h (hires_base::reset): New function.
	(hires_us): Specify that hires_base is a public import.
	(hires_ms): Ditto.
	* times.cc (gtod): Move earlier in file.
	(settimeofday): Reset gtod so that base will be subsequently
	recalculated.

2010-05-26  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check): Don't try to handle remote reparse
	points as symlinks.  Explain why.

2010-05-26  Corinna Vinschen  <corinna@vinschen.de>

	* include/inttypes.h: Change PTR definitions to int to align with the
	stdint.h type definitions of intptr_t/uintptr_t.

2010-05-26  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.h (class fhandler_pty_master): Add master_thread member.
	* fhandler_tty.cc (fhandler_pty_master::close): Properly detach from
	master thread.
	(fhandler_pty_master::setup): Store cygthread pointer of pty master
	control thread in master_thread.  Don't zap thread handle.

2010-05-26  Kazuhiro Fujieda  <fujieda@acm.org>
	    Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_lc_time_from_win): Use LOCALE_SMONTHNAME1
	instead of LOCALE_SABBREVMONTHNAME1 in Japanese and Korean
	locales to get abbreviated month names.  Explain why.

2010-05-18  Kazuhiro Fujieda  <fujieda@acm.org>

	* environ.cc (regopt): Change the first argument to wide char string.
	(environ_init): Accommodate change to the first argument of regopt.
	* exception.cc (open_stackdumpfile): Accommodate change to the type of
	progname in _pinfo.
	* external.cc (fillout_pinfo): Ditto.
	* fhandler_process.cc (format_process_winexename): Ditto.
	(format_process_stat): Ditto.
	* fork.cc (fork::parent): Ditto.
	* pinfo.cc (pinfo_basic::pinfo_basic): Call GetModuleFileNameW instead
	of GetModuleFileName.
	(pinfo::thisproc): Accommodate change to the type of progname in
	_pinfo.
	(pinfo_init): Ditto.
	* pinfo.h (_pinfo): Change the type of progname to a wide char array.
	* registry.h (reg_key::get_int): Change the first argument from
	constant point to pointer to constant.
	(reg_key::get_string): Ditto.  Change the last argument likewise.
	* registry.cc (reg_key::get_int): Accommodate change to the
	declaration.
	(reg_key::get_string): Ditto.
	* strace.cc (strace::hello): Accommodate change to the type of progname
	in _pinfo.
	(strace::vsprntf): Ditto.

2010-05-07  Christopher Faylor  <me+cygwin@cgf.cx>

	* Makefile.in (DLL_OFILES): Add pseudo-reloc.o.
	* dcrt0.cc (child_info_fork::handle_fork): Call
	_pei386_runtime_relocator here.
	(dll_crt0_1): Ditto for non-fork case.
	* dll_init.cc (dll::init): Complain more in comment.  Clean up
	slightly.
	(dll_dllcrt0_1): Call _pei386_runtime_relocator when we know we have
	a filled-in per_process structure.
	* globals.cc (__cygwin_user_data): Accommodate new fields for
	_pei386_runtime_relocator.
	* pseudo-reloc.cc: New file adapted from old lib/pseudo-reloc.c.
	Include winsup.h directly.  Collapse #ifdef __CYGWIN__ into one block.
	Perform minor whitespace code reformatting.
	(__report_error): Use small_printf to output error.
	(_pei386_runtime_relocator): Conditionalize for cygwin to take
	per_process pointer parameter.
	* winsup.h (_pei386_runtime_relocator): Declare.
	* include/cygwin/version.h
	(CYGWIN_VERSION_PER_PROCESS_API_VERSION_COMBINED): New macro.
	(CYGWIN_VERSION_USER_API_VERSION_COMBINED): Use above macro.
	(CYGWIN_VERSION_USE_PSEUDO_RELOC_IN_DLL): New macro.
	(CYGWIN_VERSION_API_MINOR): Bump to 227.
	* include/sys/cygwin.h: Remove obsolete comment.
	(per_process::unused2): Shorten.
	(per_process::pseudo_reloc_start): New field.
	(per_process::pseudo_reloc_end): Ditto.
	(per_process::image_base): Ditto.
	* lib/_cygwin_crt0_common.cc: Declare pseudo runtime externs needed for
	per_process structure.
	(_cygwin_crt0_common): Fill in pseudo_reloc runtime constants.
	* lib/pseudo-reloc-dummy.c: New file.  Dummy function to satisify ld.
	* lib/pseudo-reloc.c: Delete.

2010-05-07  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_slave::init): Disable grabbing
	process group ownership of tty in case we're being debugged.

2010-05-06  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (path_conv::check): Drop setting sym.pflags before calling
	mount_info::conv_to_win32_path since the flag value is overwritten by
	mount_info::conv_to_win32_path anyway.
	Set flags for DOS paths before calling symlink_info::check so they can
	be used in that function already.

2010-05-03  Christopher Faylor  <me+cygwin@cgf.cx>

	* dll_init.cc (dll_list::alloc): Add debugging assertion.

2010-04-29  Corinna Vinschen  <corinna@vinschen.de>

	* dlfcn.cc (get_full_path_of_dll): Handle non-existent file.

2010-04-29  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (struct opt): Add "dos" and "ihash" options.
	(fillout_mntent): Ditto.
	* path.cc (path_conv::get_nt_native_path): Use path_conv's
	has_dos_filenames_only method.
	(path_conv::check): Add PATH_IHASH flag if FS has unreliable inode
	numbers.
	(symlink_info::check_shortcut): Or symlink flags to pflags.
	(symlink_info::check_sysfile): Ditto.  Change test accordingly.
	(symlink_info::check_reparse_point): Ditto.
	(symlink_info::check_nfs_symlink): Ditto.
	(symlink_info::check): Check PATH_DOS flag in call to get_nt_native_path
	to utilize mount flag.  Ditto in test for potential restarting.  Set
	PATH_DOS if FS only allows DOS filename rules.
	* path.h (enum path_types): Add PATH_DOS and PATH_IHASH.
	(path_conv::hasgood_inode): Check PATH_IHASH instead of
	fs.hasgood_inode.
	(path_conv::has_dos_filenames_only): New method.
	* include/sys/mount.h (MOUNT_DOS): New mount flag.
	(MOUNT_IHASH): Ditto.

2010-04-29  Corinna Vinschen  <corinna@vinschen.de>

	* external.cc (cygwin_internal): Add CW_CVT_MNT_OPTS to allow mount
	flag parsing.  Add CW_LST_MNT_OPTS case to allow mount flag listing.
	* mount.cc (fstab_read_flags): Rename from read_flags.  Make externally
	available.  Change input string to char ** to allow returning faulty
	option.  Add flag for avoiding debug output.
	(fstab_list_flags): New function to create list of options.
	* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_CVT_MNT_OPTS and
	CW_LST_MNT_OPTS.

2010-04-28  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (compare_flags): New function.
	(read_flags): Replace loop with bsearch.  Simplify error check.

2010-04-28  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Bump API minor version.

2010-04-28  Corinna Vinschen  <corinna@vinschen.de>

	* cygwin.din (__locale_mb_cur_max): Export.
	* nlsfuncs.cc (__getlocaleinfo): Drop conversion to multibyte.
	(__charfromwchar): New function to convert to multibyte.
	(__eval_datetimefmt): Convert to return wchar_t pointer.  Work on
	wide char string.
	(__set_lc_time_from_win): Take additional pointer to "C" category info
	to accommodate C.foo locales.  Rework to fill wide char members in
	category info.
	(__set_lc_ctype_from_win): New function.
	(__set_lc_numeric_from_win): Take additional pointer to "C" category
	info to accommodate C.foo locales.  Rework to fill wide char members
	in category info.
	(__set_lc_monetary_from_win): Ditto.
	(__set_lc_messages_from_win): Ditto.
	(__get_current_collate_codeset): New function, called from nl_langinfo.
	* include/cygwin/config.h (__HAVE_LOCALE_INFO_EXTENDED__): Define.

2010-04-27  Christopher Faylor  <me+cygwin@cgf.cx>

	* spawn.cc (find_exec): Use the first detected errno when lookup fails.

2010-04-27  Corinna Vinschen  <corinna@vinschen.de>

	* include/regex.h: Include _ansi.h to avoid missing out on preprocessor
	macros in sys/_types.h.

2010-04-26  Corinna Vinschen  <corinna@vinschen.de>

	* mount.h (fs_info::inited): New inline method.
	* path.cc (path_conv::check): Clear filesystem info if following a
	symlink.  Use new fs_info::inited method to check if FS info is already
	available.
	(symlink_info::check): Drop fs_update_called.  Use fs_info::inited
	method instead.  Streamline test for leading space and trailing dot or
	space.  Add comments.

2010-04-23  Corinna Vinschen  <corinna@vinschen.de>

	* path.h (get_nt_native_path): Add third parameter to declaration and
	declare with regparms.
	* path.cc (get_nt_native_path): Add third parameter to allow conversion
	of leading and trailing dots and spaces on filesystems only supporting
	filenames following DOS rules.
	(path_conv::get_nt_native_path): Call get_nt_native_path according to
	fs.has_dos_filenames_only flag.
	(getfileattr): Accommodate new parameter to get_nt_native_path.
	(symlink_info::check): Revamp fs_update_called handling to call
	fs.update only once per call.  Call get_nt_native_path according to
	fs.has_dos_filenames_only flag.  Streamline filesystem dependent code
	not to be called more than once unnecessarily.  Drop code tweaking
	incoming path for broken filesystems only allowing DOS pathnames.
	Rely on changed get_nt_native_path instead.
	* mount.cc (fillout_mntent): Accommodate new parameter to
	get_nt_native_path.
	* strfuncs.cc (tfx_rev_chars): New conversion table with comment.
	(sys_cp_wcstombs): Use tfx_rev_chars rather than tfx_chars.

2010-04-22  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check): Make sure to restart only once.

2010-04-22  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (GETVOLINFO_VALID_MASK): Drop FILE_SEQUENTIAL_WRITE_ONCE
	from mask.  Expand the comment a bit.
	(WIN_FAT_FLAGS): New define.
	(FS_IS_WINDOWS_FAT): New macro.
	(fs_info::update): Handle remote FS faking to be FAT.  Subsume under
	CIFS.  Check for NWFS and has_buggy_basic_info only for remote
	filesystems.  Add check for has_dos_filenames_only.
	* mount.h (class fs_info): Add has_dos_filenames_only status flag.
	Implement accessors.
	* path.cc (symlink_info::check): Rearrange variable definitions to
	clear them up.  Add a restart label to allow a clean restart within
	the method.  Add a check for broken filesystems only allowing DOS
	pathnames in case we encounter a STATUS_OBJECT_NAME_NOT_FOUND status.
	If all checks point to one of that, restart method with tweaked
	incoming path.  Add lengthy comments to explain what we do.

2010-04-22  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check): Fix a comment.

2010-04-21  Corinna Vinschen  <corinna@vinschen.de>
	    Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_termios.cc (tcinit): Remove previously applied change.
	Replace with...
	* fhandler_tty.cc (fhandler_tty_slave::init): Become process group
	leader if called from dtable::init_std_file_from_handle.  Add comment
	to explain.

2010-04-21  Corinna Vinschen  <corinna@vinschen.de>

	* dtable.cc (dtable::init_std_file_from_handle): Set access mask for
	the slave side of ttys explicitely.  Explain why.

2010-04-20  Christopher Faylor  <me+cygwin@cgf.cx>

	* path.cc (cygwin_create_path): Free memory on error.

2010-04-20  Corinna Vinschen  <corinna@vinschen.de>

	* cygheap.h (struct init_cygheap): Add rlim_core member.
	* cygheap.cc (cygheap_init): Initialize rlim_core to RLIM_INFINITY.
	* exceptions.cc (stackdump): Drop extern declaration of rlim_core.
	Refer to cygheap->rlim_core instead.
	(exception::handle): Disable stackdumping if cygheap->rlim_core is 0.
	Don't set WCOREDUMP flag in exit code, if cygheap->rlim_core is 0.
	(sigpacket::process): Ditto.
	* resource.cc (rlim_core): Remove.
	(getrlimit): Fetch RLIMIT_CORE value from cygheap->rlim_core.
	(setrlimit): Store RLIMIT_CORE value in cygheap->rlim_core.

2010-04-19  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygerrno.h: Nevermind.

2010-04-19  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygerrno.h: Protect use of NTSTATUS for only when we need it.

2010-04-19  Christopher Faylor  <me+cygwin@cgf.cx>

	* lib/_cygwin_crt0_common.cc: Remove unneeded declarations.

2010-04-19  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_slave::fch_set_sd): Remove commented out
	code.

2010-04-19  Corinna Vinschen  <corinna@vinschen.de>

	* autoload.cc (GetNamedPipeClientProcessId): Define.
	* fhandler.h (fhandler_tty_slave::fch_open_handles): Declare private.
	(fhandler_tty_slave::fch_close_handles): Ditto.
	(fhandler_tty_slave::cygserver_attach_tty): Drop declaration.
	(fhandler_tty_slave::fstat): Declare public.
	(fhandler_tty_slave::fchmod): Declare public.
	(fhandler_tty_slave::fchown): Declare public.
	(class fhandler_pty_master): Add master_ctl handle.
	(fhandler_pty_master::pty_master_thread): Declare public.
	* fhandler_termios.cc (fhandler_termios::tcinit): If the process
	is started from a non-Cygwin process, make it tty process group
	leader.
	* fhandler_tty.cc: Throughout accommodate additional security related
	arguments in calls to functions creating or opening objects.
	(close_maybe): Move to start of file to reuse it
	in other methods.
	(struct pipe_request): Define.
	(struct pipe_reply): Define.
	(fhandler_tty_slave::open): Throughout, try to open synchronization
	objects with MAXIMUM_ALLOWED permissions.  Drop call to cygserver.
	Try to duplicate pipe handles via master_ctl pipe if duplicating
	directly doesn't work.
	(fhandler_tty_slave::cygserver_attach_tty): Remove.
	(fhandler_tty_slave::init): Close unused incoming pipe handle.
	(fhandler_pty_master::close): Send exit message to master control
	thread and close master_ctl handle.
	(fhandler_pty_master::pty_master_thread): New method, implementing the
	master control thread.
	(pty_master_thread): Static helper to start master control thread.
	(fhandler_pty_master::setup): Simplify creating pipe inheritance.
	Make sure we're the one creating the input_available_event.  Add
	comment to explain why.  Create master_ctl pipe and start master
	control thread.  Close master_ctl handle in case of error.
	* security.cc (alloc_sd): Add code to handle tty objects.  Add comments
	to explain what exactly is required.
	(get_object_sd): New function.
	(get_object_attribute): New function.
	(create_object_sd_from_attribute): New function.
	(set_object_sd): New function.
	(set_object_attribute): New function.
	(set_file_attribute): Change attribute type to mode_t.
	* security.h (set_file_attribute): Change attribute type to mode_t.
	(get_object_sd): Declare.
	(get_object_attribute): Declare.
	(create_object_sd_from_attribute): Declare.
	(set_object_sd): Declare.
	(set_object_attribute): Declare.
	* tty.cc (tty::slave_alive): Implement directly instead of via alive.
	(tty::exists): Open mutex handle with READ_CONTROL access.
	(tty::alive): Remove.
	(tty::open_output_mutex): Convert to inline method.
	(tty::open_input_mutex): Ditto.
	(tty::open_mutex): Take additional ACCESS_MASK parameter for the
	mutex open access mask.
	(tty::open_inuse): New method.
	(tty::create_inuse): Take PSECURITY_ATTRIBUTES parameter.  Drop fmt
	name parameter.  Always create TTY_SLAVE_ALIVE event.
	(tty::get_event): Take additional PSECURITY_ATTRIBUTES parameter for
	CreateEvent.
	* tty.h (class tty): Change declarations according to aforementioned
	changes.
	(tty::open_output_mutex): Implement as inline method.
	(tty::open_input_mutex): Ditto.

2010-04-19  Corinna Vinschen  <corinna@vinschen.de>

	* dtable.cc (dtable::init_std_file_from_handle): Set dev to
	valid content for ptys.  Remove setting FILE_CREATE_PIPE_INSTANCE
	in access flags since it's not needed.  Set the access mask for
	kernel objects according to what's returned by NtQueryInformationFile,
	info class FileAccessInformation.

2010-04-19  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (rename): On STATUS_ACCESS_VIOLATION, retry to open
	for DELETE until the STATUS_ACCESS_VIOLATION goes away.  Add comment
	to explain why.

2010-04-17  Corinna Vinschen  <corinna@vinschen.de>

	* sec_helper.cc (get_null_sd): Make static.  Use PSECURITY_DESCRIPTOR
	instead of SECURITY_DESCRIPTOR *.
	(sec_acl): Fix fomratting.
	* security.h (get_null_sd): Drop declaration.

2010-04-16  Corinna Vinschen  <corinna@vinschen.de>

	* cygerrno.h (seterrno_from_nt_status): Declare.
	(__seterrno_from_nt_status): Call seterrno_from_nt_status.
	* errno.cc (seterrno_from_win_error): Set errno without calling
	set_errno to avoid packing strace output with errno messages.
	(seterrno_from_nt_status): New function to print NT status as well as
	resulting Windows error.

2010-04-15  Corinna Vinschen  <corinna@vinschen.de>

	* kernel32.cc (CreateEventW): Create event object with EVENT_ALL_ACCESS
	access mask.
	(CreateMutexW): Create mutex object with MUTEX_ALL_ACCESS access mask.
	(CreateSemaphoreW): Create semaphore object with SEMAPHORE_ALL_ACCESS
	access mask.

2010-04-15  Corinna Vinschen  <corinna@vinschen.de>

	* sec_helper.cc (set_cygwin_privileges): Enable SE_DEBUG_PRIVILEGE, if
	available.  Add comments.

2010-04-13  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_socket.cc (get_inet_addr): Only test the file for being a
	socket after opening it.  Retry if opening failed with sharing
	violation.  Explain why we do this.
	(fhandler_socket::bind): Create file with no sharing allowed.

2010-04-13  John Bowman  <bowman@math.ualberta.ca>

	* cygheap.cc (cwcsdup): Fix allocation size to accommodate sizeof WCHAR.
	(cwcsdup1): Ditto.

2010-04-12  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Bump DLL minor version number to 5.

2010-04-12  Corinna Vinschen  <corinna@vinschen.de>

	* posix.sgml (std-notes): Improve lseek description.

2010-04-12  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_slave::open): Add code to duplicate
	handles within a single process to simplify openpty case.
	(fhandler_tty_slave::cygserver_attach_tty): Correctly send Windows PID
	to cygserver, rather than the Cygwin PID.

2010-04-11  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.h (class dev_console): Add backspace_keycode member.
	* fhandler_console.cc (fhandler_console::get_tty_stuff): Initialize
	backspace_keycode with CERASE.
	(fhandler_console::read): Return dev_state->backspace_keycode if the
	backspace key is pressed.
	(fhandler_console::char_command): Implement DECBKM escape sequence.

2010-04-10  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_console.cc (fhandler_console::read): Default to sending
	CERASE character if termios VERASE field is zero.
	(fhandler_console::fixup_after_fork_exec): Avoid a spurious debug
	message.

2010-04-10  Christopher Faylor  <me+cygwin@cgf.cx>

	* mkvers.sh: Use modern date formats to construct the date.

2010-04-09  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_lc_time_from_win): Actually set
	_time_locale->md_order to the D_MD_ORDER value written to the buffer.

2010-04-09  Christopher Faylor  <me+cygwin@cgf.cx>

	* path.cc (path_conv::set_normalized_path): Use crealloc_abort to avoid
	a memory leak.
	* path.h (path_conv::operator =): Just use cstrdup to allocate
	normalized_path, avoiding attempt to free a pointer which is allocated
	in another pc.

2010-04-07  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Bump DLL minor version number to 4.

2010-04-06  Corinna Vinschen  <corinna@vinschen.de>

	* thread.cc (valid_sched_parameters): Declare extern here.
	(sched_set_thread_priority): Ditto.

2010-04-06  Corinna Vinschen  <corinna@vinschen.de>

	* include/sched.h: Remove, overruled by newlib file.
	* include/sys/sched.h: Ditto.

2010-04-06  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_fifo.cc (fhandler_fifo::open): Accommodate previous return
	value change to setup_overlapped.

2010-04-02  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.h (fhandler_base::has_ongoing_io): Declare virtual method.
	* select.cc (peek_pipe): Reorganize slightly.  Don't attempt to check a
	handle if it has ongoing I/O.
	(select_pipe_info::select_pipe_info): Delete definition.
	(select_pipe_info::~select_pipe_info): Delete definition.
	(thread_pipe): Get rid of WFMO call.  Reorganize loop.
	(pipe_cleanup): Remove dependence on destructor.
	(thread_serial): Reorganize loop.
	* select.h (select_pipe_info): Empty this class since it no longer has
	any special requirements (for now).

	* syscalls.cc (readv): Remove an unneeded debug printf.

2010-04-02  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.h (fhandler_base::setup_overlapped): Delete virtual
	declaration.
	(fhandler_base::destroy_overlapped): Ditto.
	(fhandler_base_overlapped): Remove now-unneeded friend.
	(fhandler_base_overlapped::setup_overlapped): Return int, remove
	parameter.
	(fhandler_base_overlapped::get_overlapped): Return reference.
	(fhandler_base_overlapped::fhandler_base_overlapped): Be more assertive
	about zeroing everything.
	(fhandler_base_overlapped::fixup_after_fork): Declare new function.
	(fhandler_base_overlapped::fixup_after_exec): Ditto.
	(fhandler_base_overlapped::dup): Ditto.
	(fhandler_base_overlapped::close): Ditto.
	* fhandler_fifo.cc (fhandler_fifo::dup): Call
	fhandler_base_overlapped::dup rather than fhandler_base::dup.
	* pipe.cc (fhandler_pipe::dup): Ditto.
	(fhandler_pipe::init): Accommodate change in setup_overlapped arguments
	for "opened_properly" case.

2010-04-02  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Properly initialize
	overlapped part of this class.

2010-04-02  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_slave::close): Revert previous change.

2010-04-02  Christopher Faylor  <me+cygwin@cgf.cx>

	* select.h (select_pipe_info::add_watch_handle): Delete declaration.
	* select.cc (select_pipe_info::add_watch_handle): Delete definition.
	(fhandler_pipe::select_read): Delete call to add_watch_handle.
	(fhandler_pipe::select_write): Ditto.
	(fhandler_pipe::select_except): Ditto.

2010-04-02  Christopher Faylor  <me+cygwin@cgf.cx>

	* dtable.cc (dtable::init_std_file_from_handle): Avoid adding fh to
	fdtab until we know that it is good.
	* fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Handle
	error conditions more consistently.  Avoid handle leakage on error.

2010-04-02  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_slave::close): Avoid potential crash
	if former open call has been unsuccessful.

2010-04-01  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc: Fix indentation.

2010-04-01  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (rebase_locale_buf): New helper function to rebase
	function pointers in locale structures.  Explain why this is necessary.
	(__set_lc_time_from_win): Use rebase_locale_buf after realloc.
	(__set_lc_numeric_from_win): Ditto.
	(__set_lc_monetary_from_win): Ditto.

2010-03-31  Christopher Faylor  <me+cygwin@cgf.cx>

	* sigproc.cc (wait_sig): Make sure that strace is activated on
	__SIGSTRACE by calling new strace::activate function.
	* strace.cc (strace::activate): Rename from strace::strace.
	* strace.h (strace::activate): Define new function.
	(strace::strace): Call activate.

2010-03-31  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.h (fhandler_base_overlapped): Temporarily (?) make
	select_pipe_info a friend until the fhandler_tty intertangling can be
	worked out.
	* select.cc (select_pipe_info::add_watch_handle): Don't inspect the
	overlapped event if we're not waiting for I/O.
	(fhandler_tty_common::select_*): Change to standard function.  Don't do
	kludgy fhandler_pipe coercion.

2010-03-31  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.cc (fhandler_base::dup): Call setup_overlapped
	unconditionally.
	(fhandler_base::fork_fixup): Ditto.
	(fhandler_base::fixup_after_fork): Ditto.
	(fhandler_base::fixup_after_exec): Ditto.
	(fhandler_base_overlapped::setup_overlapped): Move to this class from
	fhandler_base.
	(handler_base_overlapped::destroy_overlapped): Ditto.
	(fhandler_base_overlapped::wait_overlapped): Ditto.  Track when we
	expect pending I/O.
	(fhandler_base_overlapped::read_overlapped): Move to this class from
	fhandler_base.  Return error if ongoing I/O.
	(fhandler_base_overlapped::write_overlapped): Ditto.
	(fhandler_base_overlapped::has_ongoing_io): Semi-reinstate previous
	function.
	* fhandler.h (fhandler_base::wait_overlapped): Move to
	fhandler_base_overlapped class.
	(fhandler_base::write_overlapped): Ditto.
	(fhandler_base::get_overlapped): Ditto.
	(fhandler_base::get_overlapped_buffer): Ditto.
	(fhandler_base_overlapped): New class.
	(fhandler_pipe): Inherit from fhandler_base_overlapped.  Remove
	overlapped stuff as a result.
	(fhandler_fifo): Ditto.
	* pipe.cc (fhandler_pipe::fhandler_pipe): Initialize fhandler_base_overlapped.
	(pipe): Put a descriptive name in the fhandler.

2010-03-30  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_socket.cc (fhandler_socket::wait_for_events): Remove call to
	sig_dispatch_pending.

2010-03-30  Thomas Wolff  <towo@towo.net>

	* fhandler.h (class dev_console): Drop vt100_graphics_mode_active.  Add
	flags vt100_graphics_mode_G0, vt100_graphics_mode_G1 and iso_2022_G1.
	* fhandler_console.cc: Throughout, tune VT100 graphics mode switching
	to follow ISO 2022 strictly.
	(fhandler_console::write) Reset VT100 graphic mode flags on terminal
	full reset (ESC c).

2010-03-30  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (open): Remove call to sig_dispatch_pending.

2010-03-30  Corinna Vinschen  <corinna@vinschen.de>

	* net.cc: Remove calls to sig_dispatch_pending throughout.
	* libc/rexec.cc: Ditto.

2010-03-30  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (fs_info::update): Allow variable FILE_SUPPORTS_SPARSE_FILES
	flag in netapp flag test.  Add comment.

2010-03-29  Corinna Vinschen  <corinna@vinschen.de>

	* spawn.cc (find_exec): Enable finding paths in backslash notation,
	especially for the exec[vl]p functions.

	* path.cc (symlink_info::check): Disable returning directories with
	suffix appended here.

2010-03-29  Corinna Vinschen  <corinna@vinschen.de>

	* include/cygwin/version.h: Bump DLL minor version number to 3.

2010-03-29  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.cc (fhandler_base::fstat): Keep st_ctime and st_birthtime
	fixed to 2006-12-01 00:00 UTC.

2010-03-29  Corinna Vinschen  <corinna@vinschen.de>

	* libc/rcmd.c: Enable IPv6.

2010-03-28  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.cc (fhandler_base::fstat): Set st_mtime to current time.

2010-03-28  Christopher Faylor  <me+cygwin@cgf.cx>

	* globals.cc (exit_status): Add new ES_EXIT_STARTING enum.
	* dcrt0.cc (cygwin_exit): Set exit_state to ES_EXIT_STARTING prior to
	calling real exit.
	* dll_init.cc (dll_list::detach): Remove dll from linked list and call
	destructors even if exiting.  Don't call __cxa_finalize in exiting case.

2010-03-27  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_charset_from_locale):  Set default charset for
	locales defaulting to codepage 936 to GB2312.

2010-03-22  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_socket.cc (fhandler_socket::evaluate_events): Make erase
	const in parameter list.
	(fhandler_socket::wait_for_events): Take a DWORD flags value instead of
	just a bool.  Call evaluate_events with erase flag according to
	MSG_PEEK value in flags.  Replace check for dontwait with check for
	MSG_DONTWAIT in flags.
	(fhandler_socket::connect): Call wait_for_events with 0 flags value.
	(fhandler_socket::accept4): Ditto.
	(fhandler_socket::recv_internal): Save flags in wait_flags.  Drop
	dontwait variable.  Call wait_for_events with wait_flags.
	(fhandler_socket::send_internal): Save MSG_DONTWAIT flag in wait_flags
	and call wait_for_events with wait_flags as argument.  Drop dontwait
	variable.
	* fhandler.h (class fhandler_socket): Change second parameter in
	declaration of wait_for_events to const DWORD.

2010-03-19  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_cygdrive::fstat): Add standard read
	permissions again.

2010-03-18  Corinna Vinschen  <corinna@vinschen.de>

	* shared.cc (init_installation_root): Change to make sure that scope of
	the lock lasts the entire function.

2010-03-15  Christopher Faylor  <me+cygwin@cgf.cx>

	* shared_info.h (user_info): Add dll_crt0_1 as a friend.
	(user_info::version): Make LONG to accommodate spinlock use.
	(user_info::create): New static function renamed from user_info_create.
	(user_info::initialize): New private function renamed from
	user_info_initialize.
	(SHARED_VERSION): Delete.
	(SHARED_VERSION_MAGIC): Ditto.
	(USER_VERSION_MAGIC): Ditto.
	(SHARED_INFO_CB): Ditto.
	(USER_VERSION): Ditto.
	(USER_VERSION_MAGIC): Ditto.
	(CURR_SHARED_MAGIC): Update.
	(CURR_USER_MAGIC): Ditto.
	(shared_info::version): Make LONG to accommodate spinlock use.
	(shared_info::create): New static function mirroring user_info::create.
	(dll_crt0_1): Accommodate change to user_info::initialize.
	* spinlock.h (spinlock::setto): New variable member.
	(spinlock::done): New function.
	(spinlock::spinlock): Generalize to allow arbitrary values and
	timeouts.  Call done() when lock is not needed.
	* ntdll.h: Make multiple-inclusion safe.
	(NtQuerySystemTime): Declare.
	* shared.cc (installation_root_inited): Rename from shared_mem_inited.
	(init_installation_root): Make inline.  Use a spinlock to ensure that
	this is initialized only once per session.
	(user_info::initialize): Rename from user_shared_initialize.  Protect
	with spinlock on sversion and remove other spinlock-like things.
	Remove reference to user_shared since it is now implicit.  Refer to
	spinlock version of multiple_cygwin_problem to ensure that any spinlock
	is released.
	(user_info::create): Rename from user_shared_create.  Accommodate
	change from user_shared_initialize to user_info::initialize.
	(shared_info::create): New inline function.
	(shared_info::initialize): Protect with spinlock on sversion.  Move
	heap_init back under specific control of shared_info spinlock.  Remove
	reference to SHARED_INFO_CB and just use sizeof(*this).
	(memory_init): Move all locking into respective functions where it is
	needed.  Accommodate name changes.  Remove call to heap_init().
	* syscalls.cc (seteuid32): Accommodate name change to
	user_info::create().

	* mount.cc (mount_info::create_root_entry): Report on errors from
	add_item since they should be nonexistent.
	(mount_info::init): Don't initialize nmounts.  It should already be
	zero.  Give more verbose error when root_idx < 0.  Implicitly use this
	pointer rather than explicitly referencing mount_table->.
	(mount_info::add_item): Minor whitespace fix.

2010-03-15  Christopher Faylor  <me+cygwin@cgf.cx>

	* sigproc.cc (no_signals_available): Get sense of the test right for
	previous botched change.

2010-03-15  Christopher Faylor  <me+cygwin@cgf.cx>

	* sigproc.cc (no_signals_available): Don't try to send a signal if
	still in cygwin startup code.

2010-03-13  Christopher Faylor  <me+cygwin@cgf.cx>

	* spinlock.h: New file.
	(spinlock): New class.
	* shared.cc: Include spinlock.h.
	(memory_init): Use new spinlock methods rather than roll-your-own.
	Time out after ten seconds if shared_mem_inited is not initialized.

	* sync.h: Update copyright.  Remove vanity attribution.

	* sigproc.cc (sigproc_terminate): Avoid attempts to kill the signal
	thread while we're still initializing or suffer a deadlock.

2010-03-12  Christopher Faylor  <me+cygwin@cgf.cx>

	Throughout change all calls of low_priority_sleep (0) to yield ().
	* miscfuncs.cc (yield): Rename from low_priority_sleep.  Remove all of
	the logic which called Sleep() and just use SwitchToThread.
	* miscfuncs.h (yield): Rename from low_priority_sleep.
	(SLEEP_0_STAY_LOW): Delete unused define.
	* shared.cc (memory_init): Move heap_init() call directly after shared
	memory initialization to more closely mimic long-standing program flow.
	* tty.cc (tty_list::terminate): Replace call to low_priority_sleep with
	Sleep.

2010-03-10  Christopher Faylor  <me.cygwin@cgf.cx>

	* shared.cc (memory_init): Fix comment.  Fix indentation.

2010-03-09  Christopher Faylor  <me+cygwin@cgf.cx>

	* shared_info.h (open_shared): Create function wrapper for common use
	case.
	(open_shared): Change fifth argument to a pointer rather than a
	reference.
	* fhandler_console.cc (fhandler_console::get_tty_stuff): Eliminate use
	of dummy variable and call open_shared with constant.
	* fhandler_process.cc (format_process_mounts): Ditto.
	* pinfo.cc (pinfo::init): Pass pointer to shloc.
	* shared.cc (shared_mem_inited): New variable.
	(open_shared): Crate function wrapper for common use case.
	(open_shared): Accommodate change to fifth argument to a pointer.
	(shared_info::initialize): Remove spinlock test.  Simplify function.
	Move get_session_parent_dir call back here.
	(memory_init): Protect global shared settings with shared_mem_inited
	spinlock.  Move get_session_parent_dir call to shared_info::initialize.

2010-03-09  Christopher Faylor  <me.cygwin@cgf.cx>

	* shared.cc (inst_root_inited): Delete.
	* (shared_info::initialize): Reorganize.  Move call to
	init_installation_root here under spinlock control.  Move unneeded
	non-shared_info initialization out of this function.
	(memory_init): Remove call to init_installation_root.  Call heap_init
	and get_session_parent_dir here.

2010-03-04  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (nt_path_has_executable_suffix): Change storage class of
	blessed_executable_suffixes to static.
	(rename): Revert meaning of old_explicit_suffix.  Change the rules
	for appending a .exe suffix and (yikes!) document them.

2010-03-04  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* cygwin.din: Export __xdr functions.
	* include/cygwin/version.h: Bump version.
	* posix.sgml: Add a few more XDR functions to list
	of implemented Solaris functions.

2010-03-03  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	Add XDR support.
	* cygwin.din: Export xdr functions.
	* include/cygwin/version.h: Bump version.
	* cygxdr.cc: New.
	* cygxdr.h: New.
	* dcrt0.cc (dll_crt0_1): Print the (rare) xdr-related
	error messages to stderr.
	* Makefile.in: Add cygxdr.
	* posix.sgml: Add new XDR functions to list of implemented Solaris
	functions.

2010-03-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygtls.h: Replace /*gentls_offsets*/ at end.

2010-03-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* exception.h: Fix copyright.

2010-02-27  Christopher Faylor  <me+cygwin@cgf.cx>

	Update some copyrights.
	* cygtls.cc (_cygtls::call): Invoke new exception protection here.
	(_cygtls::init_thread): Remove conditionalized exception handler setup.
	(exception_list): Delete declaration.
	(_cygtls::init_exception_handler): Delete obsolete function.
	* cygtls.h: Remove (now) unneeded include.
	(_cygtls): Make this a real C++ class.
	(_cygtls::handle_exceptions): Remove.
	(_cygtls::init_exception_handler): Remove.
	(_cygtls::call2): Make private.
	(myfault::faulted): Remove unneeded parentheses.
	* dcrt0.cc (dll_crt0_1): Remove exception handler setup.
	* dlfcn.cc (dlopen): Ditto.
	(dlclose): Ditto.
	* dll_init.cc (dll_dllcrt0_1): Ditto.
	(dll_list::detach): Use new exception handler protection.
	* exceptions.cc (dump_exception): Rename to prevent confusion with new
	class.
	(exception::handle): Rename from _cygtls::handle_exceptions.
	Accommodate new exception class.  Accommodate rename to dump_exception.
	* tlsoffsets.h: Regenerate.

2010-02-26  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygtls.h (_cygtls::init_exception_handler): Eliminate argument.
	(_cygtls::andreas): Convert to a pointer.
	(san): Convert to a real class with methods.  Use a linked list to
	keep track of previous handlers on the "stack".
	(myfault): Rewrite to use new san class rather than calling directly
	into _cygtls.
	* cygtls.cc (_cygtls::init_exception_handler): Just assume that we're
	always using the standard exception handler.
	(_cygtls::init_thread): Reflect loss of argument to
	init_exception_handler.
	* dcrt0.cc (dll_crt0_1): Ditto.
	* dfcn.cc (dlopen): Ditto.
	(dlclose): Reset the exception handler after FreeLibrary.
	* dll_init.cc (dll_list::detach): Make sure that the exception handler
	is initialized before calling destructors.
	* exceptions.cc (_cygtls::handle_exceptions): Accommodate new andreas
	pointer.
	* thread.cc (verifyable_object_isvalid): Pass objectptr to faulted for
	explicit NULL pointer checking.
	* tlsoffsets.h: Regenerate.

2010-02-26  Christopher Faylor  <me+cygwin@cgf.cx>

	* mkimport: cd away from temp directory or Windows will have problems
	removing the directory.

2010-02-26  Corinna Vinschen  <corinna@vinschen.de>

	* libc/strptime.cc: Implement support for era, alt_digits and POSIX
	padding and width modifiers.
	(era_info_t): New type.
	(free_era_info): New static function to free era_info_t storage.
	(get_era_info): New static function to create era_info_t storage
	from LC_TIME era information.
	(alt_digits_t): New type.
	(get_alt_digits): New static function to create alt_digits_t storage
	from LC_TIME alt_digits information.
	(free_alt_digits): New static function to free alt_digits_t storage.
	(find_alt_digits): New static function to scan input for alternative
	digits and return them, if any.  Return NULL otherwise.
	(__strptime): New static function taking all code from strptime.
	Implement handling for E, O, +, 0, and width modifiers per POSIX-1.2008.
	(strptime): Convert into wrapper function to provide era_info and
	alt_digits pointers and call __strptime.
	(conv_num): Take additional alt_digits_t parameter and if it's not
	NULL, call find_alt_digits to convert.

2010-02-26  Corinna Vinschen  <corinna@vinschen.de>

	* strsig.cc: Fix formatting and copyright.

2010-02-26  Pierre Humblet <Pierre.Humblet@ieee.org>

	* security.cc (check_access): Use user.imp_token if appropriate.
	Set errno and return if DuplicateTokenEx fails .

2010-02-26  Corinna Vinschen  <corinna@vinschen.de>

	Remove all traces of __CYGWIN_USE_BIG_TYPES__.

	* include/cygwin/config.h: Move Cygwin-specific build flags from
	newlib's sys/config.h here.  Add a comment.

2010-02-25  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>

	* include/cygwin/signal.h: Define SIGPWR as synonym for SIGLOST.
	* strsig.cc: Ditto.
	* include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR.

2010-02-25  Corinna Vinschen  <corinna@vinschen.de>

	* lc_era.h (lc_era_t): Fix apparent glibc bug in ja_JP era definition.

2010-02-24  Corinna Vinschen  <corinna@vinschen.de>

	* sec_auth.cc (get_full_privileged_inheritable_token): Fix dumb typo
	when checking linked token for being a primary token.

2010-02-24  Christopher Faylor  <me+cygwin@cgf.cx>

	* dlfcn.cc (dlopen): Make sure exception handler is really loaded after
	dynamic load.

2010-02-23  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygtls.cc (_cygtls::init_exception_handler): Force installation of
	our exception handler to always be at the beginning.

2010-02-23  Christopher Faylor  <me+cygwin@cgf.cx>

	* thread.cc (pthread_mutex::unlock): Don't attempt to unlock if there
	is an error.

2010-02-22  Christopher Faylor  <me+cygwin@cgf.cx>

	* include/sys/strace.h: Define _STRACE_SPECIAL.
	(strace_printf_wrap): Fix NOSTRACE definitions.
	(strace_printf_wrap1): Fix NOSTRACE definitions.
	(special_printf): Define.

	* thread.cc: Perform minor syntax fix in a comment.  Rename
	"is_good_initialzer*" to "is_initializer*" throughout.  Use
	pthread_printf rather than debug_printf throughout.  Add extra
	pthread_printf debugging throughout.
	(pthread_mutex::_new_mutex): New constant value.
	(pthread_mutex::_unlocked_mutex): Ditto.
	(pthread_mutex::_destroyed_mutex): Ditto.
	(pthread_mutex::no_owner): Define new function.
	(pthread_mutex::can_be_unlocked): Detect no_owner situation.  Handle
	PTHREAD_MUTEX_NORMAL as a special case.
	(pthread::create_cancel_event): Use C++ boolean values.
	(pthread::precreate): Use method to set mutex type.
	(pthread_cond::pthread_cond): Ditto.
	(pthread_rwlock::pthread_rwlock): Ditto.
	(pthread_mutex::pthread_mutex): Set owner to _new_mutex initially.
	(pthread_mutex::~pthread_mutex): Reset various elements to make it
	clearer if they are incorrectly reused.
	(pthread_mutex::lock): Add clarifying comment.
	(pthread_mutex::unlock): Attempt to handle various mutex types
	correctly.  In particular, reinstate ability to have one thread unlock
	another thread's mutex if type == PTHREAD_MUTEX_NORMAL.
	(semaphore::_fixup_after_fork): Avoid redundancy.
	(pthread_mutex::_fixup_after_fork): Ditto.  Fix debugging statement.
	(__pthread_cond_dowait): Accommodate changes to remove previously
	inexplicable use can_be_unblocked() as a static function.
	* thread.h: Rename "is_good_initialzer*" to "is_initializer*"
	throughout.
	(pthread_mutex): Reorganize.  Make many things private.
	(pthread_mutex::no_owner): Define new method.
	(pthread_mutex::_new_mutex): Define new constant.
	(pthread_mutex::_unlocked_mutex): Ditto.
	(pthread_mutex::_destroyed_mutex): Ditto.

2010-02-22  Corinna Vinschen  <corinna@vinschen.de>

	* lc_era.h: Redefine lc_era_t to keep
	default date and time formats as well to workaround YA Windows
	shortcoming.  Refresh with latest data.
	* lc_msg.h: Refresh with latest data.
	* nlsfuncs.cc (__eval_datetimefmt): Revert latest change.
	(__set_lc_time_from_win): Rename res to era.  Prefer default date and
	time formats from era array if available.
	(__set_lc_messages_from_win): Rename res to msg.

2010-02-20  Corinna Vinschen  <corinna@vinschen.de>

	* lc_era.h (lc_era): Fix "ja_JP" era_t_fmt entry to use traditional
	format.
	* nlsfuncs.cc (dt_flags): Remove DT_ERACAL since crippled era data
	in Windows makes it useless.
	(__eval_datetimefmt): Check if locale's default calender has
	non-gregorian start year.  Use era year also in default date entries,
	if so.

2010-02-20  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (warn_msdos): Enforce extended hex printing of multibyte
	pathnames.

2010-02-19  Christopher Faylor  <me+cygwin@cgf.cx>

	* include/sys/strace.h: Remove old code.  Add support for ptrace
	tracing.

2010-02-19  Corinna Vinschen  <corinna@vinschen.de>

	* lc_era.h: New file.
	* nlsfuncs.cc: Include lc_era.h.
	(locale_cmp): convert arguments to char** to be usable for both types,
	lc_msg_t and lc_era_t.
	(__set_lc_time_from_win): Handle era-related data

2010-02-19  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_disk_file::opendir): Try to open
	directory with stat()-friendly access mask first.  Explain why.

2010-02-19  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_base::fstat_helper):  Set st_rdev
	to same value as st_dev.  Avoid useless debug output in executable
	check.  Add filename to debug output.
	(fhandler_disk_file::facl): Simplify code calling fstat methods to
	just call fstat to avoid errors with the cygdrive directory.

2010-02-18  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (eval_datetimefmt): Rename force to flags.
	(enum dt_flags): Define.
	(__eval_datetimefmt): Change force to flags and change type to
	dt_flags.  Accommodate throughout.
	(__set_lc_time_from_win): Accommodate above change.  Set era-related
	values to empty strings for now.

2010-02-18  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.cc (fhandler_base::setup_overlapped): Revert to starting
	with handle in signalled state as it seems to fix some hangs.

2010-02-15  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (path_conv::check): Treat native DOS paths as "noacl".

2010-02-15  Corinna Vinschen  <corinna@vinschen.de>

	* mount.cc (mount_info::conv_to_win32_path): Set UNC path flags to
	cygdrive prefix path flags.

2010-02-14  Christopher Faylor  <me+cygwin@cgf.cx>

	* fhandler.cc (fhandler_base::setup_overlapped): Don't set signalled
	state to true initially.
	(fhandler_base::has_ongoing_io): Delete ill-advised function.
	(fhandler_base::read_overlapped): Rely on caller having checked
	nonblocking state.  Don't attempt to (incorrectly) check it here.
	(fhandler_base::write_overlapped): Remove call to has_ongoing_io.
	* select.cc (peek_pipe): Ditto.
	* fhandler.h (fhandler_base::has_ongoing_io): Delete declaration.

2010-02-14  Christopher Faylor  <me+cygwin@cgf.cx>

	* regex/regcomp.c (xwcrtomb): Fix one explicable and one inexcplicable
	C warning.

2010-02-13  Corinna Vinschen  <corinna@vinschen.de>

	* regex/regcomp.c (xwcrtomb): Don't convert Unicode chars outside the
	base plane always to UTF-8.  Call wcsnrtombs instead to allow arbitrary
	multibyte charsets.

2010-02-12  Corinna Vinschen  <corinna@vinschen.de>

	* regex/regcomp.c (wgetnext): Use size_t as type for n2 since that's
	what's returned by mbrtowc.
	* regex/regexec.c (xmbrtowc): Ditto.

2010-02-12  Christopher Faylor  <me+cygwin@cgf.cx>

	* pthread.cc (pthread_mutex_init): Explicitly fill out third arg to
	pthread_mutex::init.
	* thread.cc: Remov some obsolete comments.
	(verifyable_object_isvalid): Reflect change to use thread_magic_t for
	magic numbers.
	(pthread_mutex::pthread_mutex): Set magic number to invalid initially
	until we've verified that everything is valid.
	(pthread_mutex::unlock): Fix a comment.
	(verifyable_object::verifyable_object): Delete here.
	(~verifyable_object::~verifyable_object): Ditto.
	(pthread_mutex::init): Don't run is_good_initializer for non-static
	objects.
	* thread.h (thread_magic_t): New typedef.
	(verifyable_object::verifyable_object): Use thread_magic_t;
	(verifyable_object::magic): Ditto.
	(pthread_mutex::is_good_initializer_or_bad_object): Remove unneeded
	variable names.
	(pthread_mutex::can_be_unlocked): Ditto.
	(pthread_mutex::init): Ditto.  Remove default for third argument.

2010-02-12  Corinna Vinschen  <corinna@vinschen.de>

	* regex/regcomp.c (xwcrtomb): New function to convert wide chars
	outside of the base plane to UTF-8.  Call throughout instead of
	wcrtomb.
	(wgetnext): Handle surrogate pairs on UTF-16 systems.
	* regex/regexec.c (xmbrtowc): Ditto.

2010-02-12  Corinna Vinschen  <corinna@vinschen.de>

	* sec_auth.cc (get_user_local_groups): Retrieve name of well known
	builtin group from system.  Explain why.
	* sec_helper.cc (well_known_builtin_sid): New SID for BUILTIN group.
	* security.h (well_known_builtin_sid): Declare.

2010-02-11  Pierre Humblet <Pierre.Humblet@ieee.org>

	* registry.cc (get_registry_hive_path): Add space in string.

2010-02-11  Corinna Vinschen  <corinna@vinschen.de>

	* regex/engine.c (step): Drop Cygwin-specific definition.
	(NONCHAR): Better cast here to make the test work.  Move comment
	from step here.
	(matcher): Disable skipping initial string in multibyte case.
	* regex/regcomp.c (p_bracket): Don't simplify singleton in the invert
	case.
	(p_b_term): Handle early end of pattern after dash in bracket
	expression.
	(singleton): Don't ignore the wides just because there's already a
	singleton in the single byte chars.  Fix condition for a singleton
	wide accordingly.
	(findmust): Check for LC_CTYPE charset, rather than LC_COLLATE charset.
	* regex2.h (CHIN): Fix condition in the icase & invert case.
	(ISWORD): Fix wrong cast to unsigned char.

2010-02-11  Andy Koppe  <andy.koppe@gmail.com>

	* nlsfuncs.cc (initial_setlocale): Move check whether charset has
	changed from here...
	(internal_setlocale): ...to here, to avoid unnecessary work when invoked
	via CW_INT_SETLOCALE.

2010-02-10  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_charset_from_locale): Allow "@euro" modifier only
	for locales which use EUR as currency.

2010-02-10  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__get_lcid_from_locale): Convert iu_CA to iu-Latn-CA
	rather than iu-Cans-CA on Vista and later.
	(__set_charset_from_locale): Set default charset for iu_CA to UTF-8.

2010-02-10  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (_dll_crt0): Set _main_tls as early as possible.
	* thread.cc (pthread_mutex::can_be_unlocked): Remove check for
	MUTEX_OWNER_ANONYMOUS since it is racy and unsafe.
	(pthread::init_mainthread): Initialize thread directly from _my_tls.
	(pthread::self): Ditto.
	(pthread::get_tls_self_pointer): Delete.
	(pthread_mutex::pthread_mutex): Use an event rather than a semaphore.
	(pthread_mutex::lock): Rename from _<func>.  Derive self directly.
	(pthread_mutex::tryunlock): Ditto.
	(pthread_mutex::destroy): Ditto.
	(pthread_mutex::unlock): Ditto.  Accommodate change from semaphore to
	event.
	(pthread_mutex::_fixup_after_fork): Accommodate change from semaphore
	to event.
	(pthread_mutex::init): Don't attempt to initialize a semaphore unless
	it is in an initialized state.  Do this check under
	mutex_initialization_lock.lock
	* thread.h (fast_mutex::init): Use event rather than semaphore.
	(fast_mutex::lock): Ditto.
	(pthread_mutex::_lock): Delete.
	(pthread_mutex::_unlock): Ditto.
	(pthread_mutex::_trylock): Ditto.
	(pthread_mutex::_destroy): Ditto.
	(pthread_mutex::get_pthread_self): Ditto.
	(pthread_mutex::get_tls_self_pointer): Ditto.
	(pthread_mutex::lock): Un-inline.
	(pthread_mutex::unlock): Ditto.
	(pthread_mutex::trylock): Ditto.
	(pthread_mutex::destroy): Ditto.

2010-02-09  Christopher Faylor  <me+cygwin@cgf.cx>

	* cygtls.h (struct _cygtls): Remove unneeded elements.
	* thread.cc (pthread::exit): Avoid potential double call to
	_my_tls.remove.
	* tlsoffsets.h: Regenerate.

2010-02-09  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (lc_wcstombs): Add `return_invalid' flag to specify
	whether invalid chars should be ignored or not.  Change comment.
	(__set_lc_monetary_from_win): Call lc_wcstombs with return_invalid
	flag set.
	(__set_lc_messages_from_win): Simplify to accommodate the fact that
	lc_wcstombs just ignores invalid chars.  Explain why.

2010-02-09  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_lc_messages_from_win): Fix typo.

2010-02-09  Corinna Vinschen  <corinna@vinschen.de>

	* lc_msg.h: New file, fix a problem in locales with modifiers.

2010-02-09  Corinna Vinschen  <corinna@vinschen.de>

	* lc_msg.h: New file, generated from running Linux system.

2010-02-09  Corinna Vinschen  <corinna@vinschen.de>

	* lc_msg.h: New file, autogenerated from CLDR data.
	* nlsfuncs.cc: Include lc_msg.h.
	(lc_time_buf): Remove.
	(lc_numeric_buf): Remove.
	(lc_monetary_buf): Remove.
	(lc_mbstowcs): Fix previous fix.
	(__set_lc_time_from_win): Take additional pointer to buffer pointer,
	defined in newlib.
	(__set_lc_numeric_from_win): Ditto.
	(__set_lc_monetary_from_win): Ditto.
	(locale_cmp): New static function.
	(__set_lc_messages_from_win): New function to be called from newlib.

2010-02-08  Corinna Vinschen  <corinna@vinschen.de>

	* external.cc (cygwin_internal): Add CW_INT_SETLOCALE case to
	allow to call internal_setlocale().
	* nlsfuncs.cc (internal_setlocale): Make externally available.
	* include/cygwin/version.h: Bump API minor number.
	* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_INT_SETLOCALE.

	* nlsfuncs.cc (lc_mbstowcs): Fix call to f_mbtowc.
	(__set_locale_from_locale_alias): Ignore "@cjknarrow" modifier.

2010-02-07  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__get_lcid_from_locale): Handle "@cyrillic" modifier
	for uz_UZ locale here.
	(__set_charset_from_locale): Accommodate above change.

2010-02-07  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_locale_from_locale_alias): New function to read
	locale aliases from /usr/share/locale/locale.alias.

2010-02-06  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__get_lcid_from_locale): Handle no_NO as nb_NO, rather
	than nn_NO.

2010-02-06  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (has_modifier): MOve up in file to use in
	__get_lcid_from_locale as well.
	(__get_lcid_from_locale): Handle no_NO locale as alias for nn_NO.
	Default all sr_XY locales to Cyrillic script.  Change lcid to Latin
	script if "@latin" modifier has been specified.
	(__set_charset_from_locale): Handle Serbian in codepage 1251 case as
	well.  Also check for sr_BA lcid.  Restrict "@euro" modifier to
	locales otherwise defaulting to ISO-8859-1.

2010-02-06  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_charset_from_locale): Set default charset for
	"ka_GE" locale to GEORGIAN-PS, for "kk_KZ" to PT154.

2010-02-06  Corinna Vinschen  <corinna@vinschen.de>

	* path.cc (symlink_info::check_nfs_symlink): Reopen file with
	FILE_READ_EA access since, surprisingly, you need it to read EAs even
	on NFS.

2010-02-06  Corinna Vinschen  <corinna@vinschen.de>

	* sec_auth.cc (get_full_privileged_inheritable_token): New function
	to fetch token with full privileges from logon token in Vista and
	later, and to make token inheritable.  Add lengthy comments to explain
	the function's job.
	(cygwin_logon_user): Drop calling SetHandleInformation.  Enable TCB
	privilege and call get_full_privileged_inheritable_token.
	(lsaauth): Don't fetch linked token and don't make handle inheritable
	here, just call get_full_privileged_inheritable_token instead.
	(lsaprivkeyauth): Ditto.

2010-02-05  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_charset_from_locale): Set default charset for
	"uz_UZ" locale to ISO-8859-1, with the "@cyrillic" modifier to UTF-8.

2010-02-05  Christopher Faylor  <me+cygwin@cgf.cx>

	* dll_init.cc (per_module::run_dtors): Use consistent method for
	running destructors.

2010-02-04  Christopher Faylor  <me+cygwin@cgf.cx>

	* regcomp.c (p_ere): Workaround incorrect compiler warning.
	* regerror.c (regatoi): Return non-const string or compiler complains
	in certain inexplicable situations.

2010-02-04  Corinna Vinschen  <corinna@vinschen.de>

	* regex/engine.c (step): Declare and define with `int ch' rather than
	`wint_t ch' parameter.  Explain why.
	(NONCHAR): Remove related Cygwin patch here, including wrong comment.

2010-02-04  Corinna Vinschen  <corinna@vinschen.de>

	Replace regex files with multibyte-aware version from FreeBSD.
	* Makefile.in (install-headers): Remove extra command to install
	regex.h.
	(uninstall-headers): Remove extra command to uninstall regex.h.
	* nlsfuncs.cc (collate_lcid): Make externally available to allow
	access to collation internals from regex functions.
	(collate_charset): Ditto.
	* wchar.h: Add __cplusplus guards to make C-clean.
	* include/regex.h: New file, replacing regex/regex.h.  Remove UCB
	advertising clause.
	* regex/COPYRIGHT: Accommodate BSD license.  Remove UCB advertising
	clause.
	* regex/cclass.h: Remove.
	* regex/cname.h: New file from FreeBSD.
	* regex/engine.c: Ditto.
	(NONCHAR): Tweak for Cygwin.
	* regex/engine.ih: Remove.
	* regex/mkh: Remove.
	* regex/regcomp.c: New file from FreeBSD.  Tweak slightly for Cygwin.
	Import required collate internals from nlsfunc.cc.
	(p_ere_exp): Add GNU-specific \< and \> handling for word boundaries.
	(p_simp_re): Ditto.
	(__collate_range_cmp): Define.
	(p_b_term): Use Cygwin-specific collate internals.
	(findmust): Ditto.
	* regex/regcomp.ih: Remove.
	* regex/regerror.c: New file from FreeBSD.  Fix a few compiler warnings.
	* regex/regerror.ih: Remove.
	* regex/regex.7: New file from FreeBSD.  Remove UCB advertising clause.
	* regex/regex.h: Remove.  Replaced by include/regex.h.
	* regex/regexec.c: New file from FreeBSD.  Fix a few compiler warnings.
	* regex/regfree.c: New file from FreeBSD.
	* regex/tests: Remove.
	* regex/utils.h: New file from FreeBSD.

2010-02-03  Christopher Faylor  <me+cygwin@cgf.cx>

	* sigproc.cc (get_proc_lock): Fix error message typo.

2010-02-03  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_disk_file.cc (fhandler_base::fstat_helper): Workaround
	another bug in NWFS.  Add comment to explain why.  Improve debug output
	in case the NT calls to test for binary fail.
	* path.h (path_conv::fs_is_cifs): New method.
	(path_conv::fs_is_nwfs): New method.

2010-02-02  Corinna Vinschen  <corinna@vinschen.de>

	* include/paths.h (_PATH_MNTTAB): Define.
	(_PATH_MOUNTED): Define.
	* include/mntent.h: Include paths.h.  Define MNTTAB and MOUNTED as their
	paths.h equivalents.  Add comment.

2010-02-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (atexit_lock): Delete.
	(cygwin_exit): Remove atexit lock.
	(cygwin_atexit): Ditto.  Rename parameter to match newlib.  Call
	__cxa_atexit when invoked by a registered DLL.
	* dll_init.cc (remove_dll_atexit): Delete.
	(dll_list::find): New function.
	(dll_list::detach): Use dll_list::find to find dll associated with
	return address.  Use __cxa_finalize to run atexit functions associated
	with the dll.
	(cygwin_detach_dll): Don't assume that HANDLE == void *.
	* dll_init.h (dll_list::find): Declare.
	(__cxa_atexit): Ditto.
	(__cxa_finalize): Ditto.

	* init.cc (dll_entry): Clarify comment.

2010-02-02  Dave Korn  <dave.korn.cygwin@gmail.com>

	* how-startup-shutdown-works.txt: Add new document.

2010-01-29  Corinna Vinschen  <corinna@vinschen.de>

	* sec_auth.cc (lsaauth): Use CYG_LSA_MAGIC as checksum start value to
	decouple from Cygwin release.

2010-01-29  Corinna Vinschen  <corinna@vinschen.de>

	* libc/strfmon.c (__setup_vars): Test for an empty string rather than
	for a NULL pointer.

2010-01-29  Christopher Faylor  <me+cygwin@cgf.cx>

	* dll_init.cc (remove_dll_atexit): New function.
	(dll_list::detach): Run any atexit handlers registered in the DLL prior
	to unloading.

2010-01-29  Christopher Faylor  <me+cygwin@cgf.cx>

	* libc/strfmon.c (__setup_vars): Fix compiler warning about assigning
	const strings.  Compare a pointer to NULL rather than '\0'.

	* dll_init.cc (dll_dllcrt0_1): Minor comment fix.

	* pipe.cc (fhandler_pipe::create_selectable): Remove Win9x
	accommodation.

2010-01-29  Corinna Vinschen  <corinna@vinschen.de>

	Throughout, use FileBothDirectoryInformation info class rather than
	FileDirectoryInformation info class to avoid problems with incomplete
	filesystem implementations.  Fix comments accordingly.
	* fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Set
	fname->Length to 0 in error case to avoid potential crash in debug
	output.
	(fhandler_disk_file::readdir): Try to speed up the working default case.
	Check for STATUS_INVALID_NETWORK_RESPONSE as potential status value
	returned by filesystems not implementing FileIdBothDirectoryInformation.
	* ntdll.h (STATUS_INVALID_NETWORK_RESPONSE): Define.
	(FILE_BOTH_DIRECTORY_INFORMATION): Rename to official name.
	* path.cc (symlink_info::check): Don't request FILE_READ_EA access, it's
	not required for NFS.  Try to speed up the working default case.  Check
	for STATUS_INVALID_NETWORK_RESPONSE as potential status value returned
	by filesystems not supporting non-NULL EA parameters.  Fix the way
	fs.update is called.  Improve debug output.

2010-01-28  Corinna Vinschen  <corinna@vinschen.de>

	* Makefile.in (tags, ctags, CTAGS)): Add rules to create tags file.

2010-01-25  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__get_lcid_from_locale): Add comments.  Fix typos in
	comments.  Make sure to set last_lcid every time.  Return locale
	without territory part as invalid.  Handle modern serbian territory
	names per ISO 3166 on older systems as well.  Add appropriate comment.
	(__set_charset_from_locale): Handle LCID for sr_CS as well to make older
	systems happy.

2010-01-25  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_charset_from_locale): Rearrange to set charset
	more closely aligned to Glibc.

2010-01-25  Corinna Vinschen  <corinna@vinschen.de>

	* spawn.cc (spawn_guts): Only try to remove long path prefix from
	runpath if runpath is not NULL.

2010-01-25  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__get_lcid_from_locale):  Fix a comment.  Handle special
	language/TERRITORY combinations explicitely.  Explain why.

2010-01-24  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (__set_charset_from_locale): Fix comment.

2010-01-24  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (check_codepage): Move from syscalls.cc here.
	(internal_setlocale): Ditto.
	(initial_setlocale): Ditto.
	(setlocale): Ditto.
	* strfuncs.cc (__sjis_wctomb): Revert previous patch.
	(__sjis_mbtowc): Ditto.
	* syscalls.cc: Move setlocale-related functions to nlsfuncs.cc.

2010-01-23  Corinna Vinschen  <corinna@vinschen.de>

	* strfuncs.cc (__sjis_wctomb): Special handling for characters which
	differ between SJIS and Windows codepage 932, if charset is "SJIS".
	(__sjis_mbtowc): Ditto.
	(_jis_wctomb): Remove.
	(__jis_mbtowc): Remove.

2010-01-23  Corinna Vinschen  <corinna@vinschen.de>

	* nlsfuncs.cc (wcsxfrm): Call LCMapStringW with LCMAP_BYTEREV flag to
	allow correct comparison using wcscmp.

2010-01-22  Corinna Vinschen  <corinna@vinschen.de>

	* posix.sgml (strfmon): Move to implemented SUSv4 API.

2010-01-22  Corinna Vinschen  <corinna@vinschen.de>

	* Makefile.in (DLL_OFILES): Add nlsfunc.o and strfmon.o.
	* autoload.cc (LocaleNameToLCID): Define.
	* cygwin.din (strfmon): Export.
	* nlsfuncs.cc: New file.  Define a lot of internal functions called
	from setlocale.
	(wcscoll): Implement locale-aware here, using CompareStringW function.
	(strcoll): Ditto.
	(wcsxfrm): Implement locale-aware here, usingLCMapStringW function.
	(strxfrm): Ditto.
	(__set_charset_from_locale): Replace __set_charset_from_codepage.
	Return Linux-compatible charset.
	* strfuncs.cc (__set_charset_from_codepage): Remove.
	* wchar.h (__set_charset_from_codepage): Drop definition.
	* wincap.h (wincaps::has_localenames): New element.
	* wincap.cc: Implement above element throughout.
	* libc/strfmon.c: New file.
	* libc/strptime.cc: Remove locale constant strings in favor of
	access to locale-specifc data.
	(strptime): Point _CurrentTimeLocale to locale-specific data.
	Throughout use correct locale-specific format fields for all
	locale-specific formats.
	* include/monetary.h: New file.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.

2010-01-18  Corinna Vinschen  <corinna@vinschen.de>

	* strfuncs.cc: Remove needless includes.

2010-01-17  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (internal_setlocale): Use UTF-8 internally if external
	charset is ASCII.

2010-01-15  Corinna Vinschen  <corinna@vinschen.de>

	* libc/fnmatch.c: Replace with multibyte capable version from FreeBSD.

2010-01-15  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_socket.cc (fhandler_socket::accept4): Reset async flag
	on accepted socket.

2010-01-15  Pierre A. Humblet  <phumblet@phumblet.no-ip.org>

	* fhandler_socket.cc (fhandler_socket::accept4): Set nonblocking
	flag exactly according to flags, as on Linux.
	* net.cc (cygwin_accept): Maintain BSD semantics here.

2010-01-15  Corinna Vinschen  <corinna@vinschen.de>

	* cygwin.din (accept4): Export.
	* fhandler.h (fhandler_socket::accept4): Rename from accept.  Take
	additional flag parameter.
	* fhandler_socket.cc (fhandler_socket::accept4): Ditto.  Handle
	SOCK_NONBLOCK and SOCK_CLOEXEC flags.
	* net.cc (cygwin_socket): Handle SOCK_NONBLOCK and SOCK_CLOEXEC flags
	in type.  Check for invalid flag values.
	(socketpair): Ditto.
	(cygwin_accept): Accommodate renaming of fhandler_socket::accept
	function to accept4.
	(accept4): New function.
	* posix.sgml: Mention accept4 as GNU extensions.
	* include/cygwin/socket.h (SOCK_NONBLOCK): Define.
	(SOCK_CLOEXEC): Define.
	(_SOCK_FLAG_MASK): Define when building Cygwin.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
	* include/sys/socket.h (accept4): Declare.

2010-01-15  Corinna Vinschen  <corinna@vinschen.de>

	* posix.sgml: Mention dup3 and pipe2 as GNU extensions.

2010-01-14  Corinna Vinschen  <corinna@vinschen.de>

	* dcrt0.cc (dll_crt0_1): Reset locale to "C" at the last moment before
	calling the application's main.
	* syscalls.cc (internal_setlocale): Don't reset locale to "C here.
	Change comment accordingly.

2010-01-14  Corinna Vinschen  <corinna@vinschen.de>

	* cygwin.din (dup3): Export.
	(pipe2): Export.
	* dtable.cc (dtable::dup_worker): Take additional flags parameter.
	Handle O_CLOEXEC flag.
	(dtable::dup3): Rename from dup2.  Take additional flags parameter.
	Check for valid flags.  Drop check for newfd == oldfd.
	* dtable.h (dtable::dup_worker): Add flags parameter.
	(dtable::dup3): Rename from dup2.
	* fcntl.cc (fcntl64): Add F_DUPFD_CLOEXEC case.
	* fhandler.h (fhandler_mailslot::get_object_attr): Add flags parameter.
	* fhandler.cc (fhandler_base::open): Use security attribute with
	inheritance according to setting of O_CLOEXEC flag.
	* fhandler_console.cc (fhandler_console::open): Ditto.
	* fhandler_fifo.cc (sec_user_cloexec): New inline function to
	create security attribute with inheritance according to setting of
	O_CLOEXEC flag.
	(fhandler_fifo::open): Call sec_user_cloexec to fetch security
	attribute.
	(fhandler_fifo::wait): Ditto.
	* fhandler_mem.cc (fhandler_dev_mem::open): Ditto.
	* fhandler_mailslot.cc (fhandler_mailslot::get_object_attr): Take
	additional flags parameter.  Use security attribute with inheritance
	according to setting of O_CLOEXEC flag.
	(fhandler_mailslot::open): Call get_object_attr with flags parameter.
	* fhandler_registry.cc (fhandler_registry::open): Call set_close_on_exec
	on real handles to accommodate O_CLOEXEC flag.
	* fhandler_tty.cc (fhandler_tty_slave::open): Ditto.
	* fhandler_tape.cc: Create mutex with inheritance according to setting
	of O_CLOEXEC flag.
	* pipe.cc: Replace usage of O_NOINHERIT with O_CLOEXEC.
	 (fhandler_pipe::init): Simplify setting close_on_exec flag.
	(fhandler_pipe::open): Remove setting close_on_exec flag.
	(fhandler_pipe::create): Use security attribute with inheritance
	according to setting of O_CLOEXEC flag.
	(pipe2): New exported function.
	* posix_ipc.cc: Throughout, open backing files with O_CLOEXEC
	flag to follow POSIX semantics.
	* security.h (sec_none_cloexec): New define.
	* syscalls.cc (dup): Add missing extern "C" qualifier.  Accommodate
	renaming of dtable::dup2 to dtable::dup3.
	(dup2): Ditto.  Check newfd == oldfd here.
	(dup3): New function.  Check newfd == oldfd here.
	(open): Set close_on_exec flag according to O_CLOEXEC flag before
	calling fhandler->open.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.

2010-01-13  Corinna Vinschen  <corinna@vinschen.de>

	* include/fcntl.h (O_TTY_INIT): Define as 0.

2010-01-13  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_tty.cc (fhandler_tty_master::init): Don't erase all default
	termios settings of slave console.

2010-01-13  Corinna Vinschen  <corinna@vinschen.de>

	* syscalls.cc (rename): Don't exit prematurely with EROFS when trying
	to rename an AF_LOCAL socket or when trying to replace an AF_LOCAL
	socket.

2010-01-12  Corinna Vinschen  <corinna@vinschen.de>

	* globals.cc (ro_u_nwfs): New R/O unicode string.
	* mount.cc (fs_info::update): Check for NWFS filesystem.  Set
	has_buggy_basic_info, if so.  Add comment to explain why.
	(fillout_mntent): Add "nwfs" string to fs_names array.
	* mount.h (enum fs_info_type): Add nwfs.
	(class fs_info): Add has_buggy_basic_info status flag.  Add accessors
	for has_buggy_basic_info and is_nwfs.
	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Accommodate
	filesystems with broken FileBasicInformation handling.
	* path.cc (symlink_info::check): Ditto.
	* path.h (path_conv::has_buggy_basic_info): Add method.

2010-01-12  Corinna Vinschen  <corinna@vinschen.de>

	* dtable.cc (build_fh_name_worker): Remove.  Move all functionality
	back into build_fh_name.
	(build_fh_name): Drop unused HANDLE parameter.  Drop call to pc.fillin.
	Remove disabled build_fh_name with UNICODE_STRING name parameter.
	* dtable.h (build_fh_name): Drop HANDLE parameter from declaration.
	Remove declaration for build_fh_name with UNICODE_STRING name parameter.
	* path.cc (path_conv::fillin): Remove.
	(symlink_info::check): Fix comment.
	* path.h (path_conv::fillin): Remove declaration.
	* dir.cc: Accommodate change in build_fh_name parameters throughout.
	* sec_acl.cc: Ditto.
	* syscalls.cc: Ditto.

	* ntea.cc (getxattr_worker): Fix debug output.
	(setxattr_worker): Ditto.
	* times.cc (utimens_worker): Ditto.

2010-01-11  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler_proc.cc (format_proc_stat): Use new in_buf.
	(format_proc_cpuinfo): Replace szBuffer with a union in_buf.  Use type
	correct throughout.  Add a couple of missing or newer cpu flags.  Allow
	certain AMD flags for intel as well.

2010-01-10  Corinna Vinschen  <corinna@vinschen.de>

	* fhandler.h (fhandler_base::fstat_helper): Declare timestamps as
	PLARGE_INTEGER.
	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle):
	Accommodate fstat_helper change of timestamp arguments.
	(fhandler_base::fstat_by_name): Ditto.
	(fhandler_base::fstat_helper): Define with timestamps as PLARGE_INTEGER.
	Accommodate in call to to_timestruc_t.

2010-01-08  Corinna Vinschen  <corinna@vinschen.de>

	* sec_auth.cc (get_token_group_sidlist): Add BUILTIN\Users account
	to all created tokens.
	* sec_helper.cc (well_known_users_sid): Define as BUILTIN\Users.
	* security.h (well_known_users_sid): Declare.

2010-01-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc: Bump copyright.

2010-01-01  Christopher Faylor  <me+cygwin@cgf.cx>

	* dcrt0.cc (dll_crt0_1): Move internal locale setting prior to
	potential globify to prevent creation of unglobbed filenames in the
	wrong character set.