OSDN Git Service

Provide euidaccess, canonicalize_file_name; fix fchmodat.
[pf3gnuchains/pf3gnuchains3x.git] / winsup / cygwin / ChangeLog
index ec9228a..7eb2163 100644 (file)
@@ -1,3 +1,703 @@
+2009-09-25  Eric Blake  <ebb9@byu.net>
+
+       * syscalls.cc (fchmodat): lchmod is not yet implemented.
+       (euidaccess): New function.
+       * path.cc (realpath): Update comment.
+       (canonicalize_file_name): New function.
+       * include/cygwin/stdlib.h (canonicalize_file_name): Declare it.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+       * cygwin.din: Export canonicalize_file_name, eaccess, euidaccess.
+       * posix.sgml: Mention them.
+
+2009-09-25  Eric Blake  <ebb9@byu.net>
+
+       * fhandler.h (fhandler_base::fhaccess): Add parameter.
+       * security.h (check_file_access, check_registry_access): Likewise.
+       * security.cc (check_file_access, check_registry_access)
+       (check_access): Implement new parameter.
+       * fhandler.cc (fhandler_base::fhaccess): Likewise.
+       (device_access_denied): Update caller.
+       * syscalls.cc (access, faccessat): Update callers.
+       * spawn.cc (find_exec, fixup): Likewise.
+
+2009-09-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix_ipc.cc (mq_open): Avoid closing the same descriptor twice in
+       case of errors.
+       (sem_open): Ditto.
+
+2009-09-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * kernel32.cc (CreateMutexW): Use correct access mask.
+       (CreateSemaphoreW): Ditto.
+
+2009-09-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * strfuncs.cc (__set_charset_from_codepage): Fetch current ANSI
+       codepage if cp is 0.
+
+2009-09-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * strfuncs.cc (sys_cp_wcstombs): Convert lone surrogate pair
+       second halves to unambiguous ASCII SO sequence.  When converting
+       chars invalid in current codepage to ASCII SO sequence, make
+       sure to check for surrogate pair second half only if at least
+       one wide characters is left.  Decrement nwc if valid second half has
+       been converted.
+       (sys_cp_mbstowcs): Improve ASCII SO handling.  Never break from loop
+       if invalid character has been found.  Recognize ASCII SO sequence
+       representing originally invalid mulitbyte char converted into a
+       lone surrogate pair second half.  Convert accordingly.
+
+2009-09-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (WSARecv): Define.
+       * fhandler_socket.cc (fhandler_socket::recv_internal): Call WSARecv
+       instead of WSARecvFrom if no name parameter is given.  Explain why.
+
+2009-09-22  Eric Blake  <ebb9@byu.net>
+
+       * syscalls.cc (faccessat): Fix typo, reject bad flags.
+       (fchmodat, fchownat, fstatat, utimensat, linkat, unlinkat): Reject
+       bad flags.
+
+2009-09-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * strfuncs.cc (sys_cp_mbstowcs): Reset shift state after handling
+       invalid multibyte sequence.
+
+2009-09-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (symlink_worker): Rework error handling to generate Linux
+       compatible errno in case of trailing slash in newpath.
+
+2009-09-22  Eric Blake  <ebb9@byu.net>
+
+       * dtable.h (OPEN_MAX_MAX): New macro.
+       * resource.cc (getrlimit) [RLIMIT_NOFILE]: Use it.
+       * dtable.cc (dtable::extend): Likewise.
+       * fcntl.cc (fcntl64): Obey POSIX rule with too-large F_DUPFD.
+       * syscalls.cc (dup2): Likewise.
+
+2009-09-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygheap.h (cwdstuff::get_posix): Convert to const inline method just
+       returning pointer to posix path.
+       (cwdstuff::reset_posix): Convert to non-inline method taking a wchar_t
+       pointer.
+       * path.cc (cwdstuff::set): Revert change from 2009-05-13.  Set posix
+       to valid incoming path again.
+       (cwdstuff::reset_posix): New implementation setting posix path from
+       incoming wchar_t path.  Explain usage.
+       (cwdstuff::get_posix): Drop implementation.
+       (cwdstuff::get): Drop special case to handle empty posix path.
+       * syscalls.cc (internal_setlocale): Store old posix cwd as wide char
+       path.  Restore posix cwd using new charset.  Explain why.
+
+2009-09-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::link): Drop faking hardlink
+       creation on filesystems not supporting hardlinks.
+
+2009-09-20  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * dcrt0.cc (dll_crt0_1): Add another hack to REALLY make sure that
+       cxx_malloc is always set to the cygwin version.
+
+2009-09-20  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * external.cc (cygwin_internal): Add hack to always reset cxx_malloc to
+       proper value.
+
+       * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Relocate wayward
+       comment.
+
+2009-09-19  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * exceptions.cc (sigpacket::process): Explicitly set thread-specific
+       handler function to zero to avoid transferring to incorrect location.
+       (_cygtls::call_signal_handler): Don't transfer to handler if there is
+       no handler to transfer to.
+
+2009-09-18  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * exceptions.cc (sigpacket::process): Give sigwait() processing
+       precedence even when a handler is present.
+
+       * syscalls.cc (getpagesize): Change return to 'int'.
+
+2009-09-16  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * ntea.c (write_ea): Don't abort if not-samba.
+
+2009-09-01  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * select.cc (peek_console): Always check window size when there is ANY
+       keyboard activity.
+
+2009-08-26  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.h (INTERIX_SYMLINK_COOKIE): Define.
+       * path.cc (symlink_info::check_sysfile): Read Interix symlinks as well.
+
+2009-08-26  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): Only set R/O attribute if ACLs
+       are not used.
+
+2009-08-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.cc (fs_info::update): Add comment.
+       * path.cc (symlink_info::check_reparse_point): Return -1 for volume
+       mount points.  Explain why.
+       (symlink_info::check): Call fs.update again for volume mount points.
+       Explain why.
+
+2009-08-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * globals.cc (ro_u_volume): New R/O unicode string.
+       * path.cc (symlink_info::check_reparse_point): Fix check for volume
+       mount points to work on Vista and later as well.
+
+2009-08-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * strfuncs.cc (__set_charset_from_codepage): Add codepages 20866
+       (KOI8-R) and 21866 (KOI8-U).
+
+2009-08-21  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * dll_init.h (has_dtors): New flag.
+       (run_dtors): New wrapper function which avoids calling dtors more than
+       once.
+       * dll_init.cc (dll_global_dtors): Use dll.run_dtors wrapper.
+       (dll_list::detach): Ditto.
+       (dll_list::alloc): Set has_dtors flag.
+
+2009-08-21  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fcntl.cc (fcntl64): Detect negative fd as error.
+
+2009-08-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mmap.cc (mmap64): Allocate fh_disk_file on cygheap.  Delete
+       explicitely before returning.
+
+2009-08-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (build_fh_dev): Take additional bool parameter indicating
+       whether set_name should be called or not.
+       (dtable::dup_worker): Call build_fh_pc with new second parameter set
+       to false.  Explain why.  If fhandler's dup failed, delete rather than
+       cfree newfh and set newfh to NULL to indicate failure correctly.
+       * dtable.h (build_fh_pc): Change declaration according to above change.
+       Default set_name parameter to true.
+       * mmap.cc (mmap_record::free_fh): Delete rather than cfree fh.
+
+2009-08-18  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * dtable.cc (dtable::fixup_after_exec): Close any popen'ed file handles here.
+       * fhandler.h (fhandler_*::ispipe): New function.
+       (fhandler_base::get_popen_pid): Define virtual function.
+       (fhandler_*::isdevice): Make const.
+       (fhandler_*::isfifo): Ditto.
+
+2009-08-17  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * syscalls.cc (popen): Reorganize slightly for clarity.  Fix a comment.
+
+2009-08-17  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * syscalls.cc (popen): Rewrite to accommodate situations where stdin,
+       stdout, or stderr are closed.
+
+2009-08-17  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * pipe.cc (fhandler_pipe::create_selectable): Add -pipe to default pipe names.
+
+       * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Use bool/true/false
+       for what is actually a boolean variable.
+
+2009-08-14  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::readdir): Fix length
+       check for ".." dir.
+
+2009-08-14  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::readdir): Change comment
+       to be fair.
+
+2009-08-14  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Remove
+       ill-advised attempt to optimize "." and ".." handling by checking for
+       specific position in directory listing.  Explain why.
+       (fhandler_disk_file.cc (fhandler_disk_file::readdir): Ditto.
+       Special-case opening file on NFS to fetch inode number and add longish
+       comment to explain why.
+
+2009-08-14  Corinna Vinschen  <corinna@vinschen.de>
+
+       * (fhandler_socket::getsockname): Fix length returned for unbound
+       AF_LOCAL sockets.
+       (fhandler_socket::getpeername): Ditto.
+       * net.cc (socketpair): Don't set sun_path and peer_sun_path to
+       make sure getsockname and getpeername return the correct values
+       for AF_LOCAL sockets.
+
+2009-08-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (fhandler_socket::accept): Use sizeof rather
+       then constant size.  Truncate returned data, but return full address
+       length as per POSIX.
+       (fhandler_socket::getsockname): Truncate returned data, but return full
+       address length as per POSIX.
+       (fhandler_socket::getpeername): Ditto.
+
+2009-08-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (class fhandler_socket): Add peer_sun_path member.
+       (fhandler_socket::set_peer_sun_path): New method.
+       (fhandler_socket::get_peer_sun_path): New method.
+       * fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize
+       peer_sun_path to NULL.
+       (fhandler_socket::~fhandler_socket): Free peer_sun_path if necessary.
+       (fhandler_socket::dup): Duplicate peer_sun_path.
+       (fhandler_socket::accept): Ditto.  Return fake unbound peer content
+       and len in case of AF_LOCAL sockets.
+       (fhandler_socket::getsockname): Always use local sockaddr_storage to
+       store socket address and copy over to incoming address.  Handle every
+       namelen correctly per POSIX.
+       (fhandler_socket::getpeername): Ditto.  Add code path to return
+       correct value for AF_LOCAL sockets.
+       (fhandler_socket::set_peer_sun_path): New method.
+       * net.cc (socketpair): Set peer_sun_path to empty string, just like
+       sun_path.
+
+2009-08-13  Corinna Vinschen  <corinna@vinschen.de>
+           Dave Korn <dave.korn.cygwin@googlemail.com>
+
+       * cxx.cc (default_cygwin_cxx_malloc): Enhance commenting.
+       * dll_init.cc (dll_dllcrt0_1): Likewise.
+       * dlfcn.cc (dlopen): Prevent dlopen()'d DLL from installing any
+       cxx malloc overrides.
+       * include/cygwin/cygwin_dll.h (__dynamically_loaded): New variable.
+       * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Check it and only
+       install cxx malloc overrides when statically loaded.  Extend comments.
+
+2009-08-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (fhandler_socket::accept): Always use local
+       sockaddr_storage to store peer address and copy over to incoming
+       peer address if available.  Truncate data as necessary according
+       to POSIX.
+
+2009-08-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/limits.h (NGROUPS_MAX): Set to a more sane value.
+       * include/sys/param.h (NGROUPS): Ditto.
+
+2009-08-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * spawn.cc (av::fixup): Check shell scripts for executability only on
+       filesystems/mounts supporting real permissions.
+
+2009-08-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (DEV_SOCKET): New static WCHAR string.  Name of
+       the native NT socket device.
+       (dtable::init_std_file_from_handle): Remove unused tmp_pathbuf
+       variable.  Move check for sockets into FILE_TYPE_PIPE clause.
+       Rely on handle_to_fn having recognized socket, or check if
+       getsockopt works to accommodate NT4 shortcoming.
+       (handle_to_fn): Use tmp_pathbuf for OBJECT_NAME_INFORMATION
+       buffer and simplify code due to that.  Check name returned by
+       NtQueryObject for socket device.
+
+2009-08-10  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fhandler_console.cc (create_invisible_console_workaround): Fix size
+       of cmd in the way originally intended.
+
+2009-08-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (create_invisible_console_workaround):  Fix
+       size of cmd to take spaces into account.
+
+2009-08-08  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (dtable::init_std_file_from_handle): Fix comment to
+       document change in the Windows 7 workaround.
+       * wincap.cc (wincapc::init): Don't set has_console_handle_problem
+       to false on 32 bit systems.
+
+2009-08-06  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (cygwin_getnameinfo): Force setting NI_NUMERICSERV only
+       on Windows 2003 and earlier, only if the port number doesn't
+       resolve to a well-known service.  Change comment accordingly.
+
+2009-08-05  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygheap.h (cygheap_debug::endh): Delete.
+       * debug.cc (lock_debug::acquired): Delete.
+       (lock_debug::lock_debug): Simplify.
+       (lock_debug::unlock): Ditto.
+       (find_handle): Don't set endh here.
+       (add_handle): Add new handle to beginning of the list rather than
+       trying to maintain an end list pointer.
+       (delete_handle): Minor optimization.
+       (mark_closed): Make logic clearer.
+       (verify_handle): Lock handle list before scanning.
+       (setclexec): Ditto.
+       (modify_handle): Ditto.
+       (newh): Don't lock handle list here.  Assume caller did this.
+       (mark_closed): Ditto.
+       (close_handle): Remove unneeded #if.
+       * dtable.cc (dtable::dup2): Tweak debug output.
+
+2009-08-04  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * path.cc (patch_conv::check): Zero path before setting it.
+
+2009-08-04  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fhandler_socket.cc (fhandler_socket::send_internal): Just use wmem
+       size if the length exceeds it.
+       * net.cc (fdsock): Use 65535 as window size, just like the comment
+       says or we run into problems with DuplicateHandle.
+
+       * path.cc (patch_conv::check): Use set_path to set invalid filename.
+       * path.h (path_conv::path_conv): Ditto.
+
+2009-08-04  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fhandler.h (pdrive_buf): Defensively allocate one extra byte.
+
+2009-08-04  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fhandler.h (fhandler_cygdrive:DRVSZ): New enum.
+       (pdrive_buf): New place to hold information about cygdrive.
+       * fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Store drive
+       info in pdrive_buf since get_win32_name() could now be too small to
+       hold everything.
+       (fhandler_cygdrive::rewinddir): Reset pdrive to pdrive_buf.
+       (fhandler_cygdrive::closedir): Ditto.
+       * pipe.cc (fhandler_pipe::init): Be more defensive when referencing
+       get_win32_name().  Rework logic which made a copy of the POSIX path and
+       then never used it.
+
+2009-08-02  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * sigproc.cc (stopped_or_terminated): Don't return a match when stopsig
+       == SIGCONT and not WCONTINUED.
+       * termios.cc (tcsetpgrp): Improve debugging output.
+
+2009-08-01  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygheap_malloc.h: New file.
+       * cygheap.h: Remove stuff now included in cygheap_malloc.h and include
+       that file.  Make cygheap_init a standard c++ function.  Remove unneeded
+       child_info declaration.
+       * path.h: Include cygheap_malloc.h. Remove extra cstrdup declaration.
+       (path_conv): Reorganize to group variables together.
+       (path_conv::path): Make const char *.
+       (path_conv::known_suffix): Ditto.
+       (path_conv::normalized_path): Ditto.
+       (path_conv::path_conv): Reorganize initializers to reflect new element
+       ordering.
+       (path_conv::get_win32): Change return value to const char *.
+       (path_conv::set_path): Move back here from spawn.cc.
+       (parh_conv::modifiable_path): New function.
+       * path.cc (path_conv::add_ext_from_sym): Accommodate const'ness of
+       known_suffixes.
+       (path_conv::set_normalized_path): Ditto for normalized_path.
+       (path_conv::check): Use modifiable_path whereever we need to modify the
+       path element.  Use set_path to set the path.
+       (path_conv::~path_conv): Accommodate new const'ness.
+       * spawn.cc (perhaps_suffix): Declare ext as const since that's what is
+       being returned.
+       (path_conv::set_path): Move back to path.h.
+       * winf.f (linebuf): Perform minor cleanup.
+       (linebuf::fromargv): Change second parameter to const.
+       * winf.cc (linebuf::fromargv): Ditto.
+
+2009-08-01  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * path.h (path_conv::set_path): Change return value.
+       * spawn.cc (path_conv::set_path): Return newly set value.
+       (find_exec): Set retval to newly set value when calling set_path.
+
+2009-07-31  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * spawn.cc (find_exec): Fix one more path where retval was not set.
+
+2009-07-31  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * spawn.cc (find_exec): Stop relying on the ability to set retval to a
+       fixed path_conv buffer and set it on the fly instead.
+
+2009-07-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.h (cstrdup): Fix declaration.
+
+2009-07-29  Dave Korn  <dave.korn.cygwin@googlemail.com>
+
+       * globals.cc (enum exit_states::ES_GLOBAL_DTORS): Delete.
+       * dcrt0.cc (__main): Schedule dll_global_dtors to run
+       atexit before global dtors.
+       (do_exit): Delete test for ES_GLOBAL_DTORS and call to
+       dll_global_dtors.
+
+2009-07-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.h (class path_conv): Convert path from char array to char *.
+       Initialize to NULL in constructors.  Drop normalized_path_size member.
+       (path_conv::size): Remove.
+       (path_conv::operator =): Always copy with sizeof path_conv.  Always
+       duplicate path on cygheap.
+       (path_conv::set_path): Move implementation to spawn.cc.
+       * path.cc (path_conv::set_normalized_path): Always allocate
+       normalized_path on cygheap.
+       (path_conv::check): Don't work on path, rather allocate THIS_path in
+       TLS and use it throughout.  When finished, allocate path on cygheap
+       and copy over.  Defer tacking on extension after having copied path.
+       * spawn.cc (path_conv::set_path): Implement here.
+
+2009-07-27  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.h (enum fs_info_type): New type.
+       (IMPLEMENT_FS_FLAG): New define.
+       (class fs_info): Convert filesystem type status flags into an enum
+       fs_info_type.  Add cifs FS.  Revert change to has_buggy_open and
+       has_buggy_fileid_dirinfo.  Make them normal; status flags again.
+       Implement is_FS functions using IMPLEMENT_FS_FLAG.
+       * mount.cc (fs_info::update): Define MINIMAL_WIN_NTFS_FLAGS and
+       FS_IS_WINDOWS_NTFS.  Add comment.  Only test remote filesystems
+       for "NTFS" once.  Add is_cifs check using FS_IS_WINDOWS_NTFS.
+       Set has_buggy_open flag for SUNWNFS.  Set has_buggy_fileid_dirinfo
+       flag for UNIXFS and all cifs type filesystems.  Only check for
+       caseinsensitivity once.
+       (fillout_mntent): Create locale fs_names array.  Use for setting
+       _my_tls.locals.mnt_type.
+
+2009-07-27  Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+       * posix.sgml (std-notes): Remove obsolete reference to CYGWIN=server.
+
+2009-07-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix.sgml (std-notes): Add flock restriction.
+
+2009-07-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (set_console_title): Set buffer size to
+       TITLESIZE + 1.  Call sys_mbstowcs with correct destination length.
+
+2009-07-24  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * sigproc.h (wait_for_sigthread): Eliminate parameter.
+       * sigproc.cc (wait_for_sigthread): Ditto.  Don't synchronize with
+       wait_sig after receiving an event that it is ready to go.
+       (init_sig_pipe): New function.
+       (wait_sig): Call init_sig_pipe to create pipes for communicating
+       signals to this process.  Don't send sigCONT signal when initializing.
+       * fork.cc (frok::child): Accommodate wait_for_sigpipe parameter change.
+
+2009-07-24  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fhandler.h (fhandler_*::write): Make ssize_t/__stdcall.
+       (fhandler_*::write_overlapped): Ditto.
+       (fhandler_*::raw_write): Ditto.
+       (fhandler_*::readv): Ditto.
+       (fhandler_*::writev): Ditto.
+       (fhandler_*::raw_read): Make __stdcall.
+       * fhandler: Accommodate changes to read/write functions throughout.
+       * fhandler_clipboard.cc: Ditto.
+       * fhandler_console.cc: Ditto.
+       * fhandler_dsp.cc: Ditto.
+       * fhandler_fifo.cc: Ditto.
+       * fhandler_mailslot.cc: Ditto.
+       * fhandler_mem.cc: Ditto.
+       * fhandler_mem.cc: Ditto.
+       * fhandler_random.cc: Ditto.
+       * fhandler_tape.cc: Ditto.
+       * fhandler_tty.cc: Ditto.
+       * fhandler_virtual.cc: Ditto.
+       * fhandler_windows.cc: Ditto.
+       * fhandler_zero.cc: Ditto.
+       * syscalls.cc (readv): Use ssize_t as temp variable.
+
+       * fhandler.cc (fhandler_base::read): Coerce returned len to signed or
+       it will never be treated as < 0.
+       (fhandler_base::wait_overlapped): Minimize calls to GetLastError.
+       Remove duplicate debugging test.  Fix error return.
+
+       * fhandler.h (fhandler_fifo::fifo_name): Declare new function.
+       (fhandler_fifo::close): Ditto.
+       (fhandler_fifo::dup): Ditto.
+       (fhandler_fifo::close_on_exec): Ditto.
+       * fhandler.cc (fhandler_fifo::fifo_name): Define new function.
+       (FIFO_BUF_SIZE): New define.
+       (cnp): Ditto.
+       (fhandler_fifo::open): Rework.  Use cnp to open named pipe.  Always
+       open write side as a client.  Open dummy client when writing and can't
+       connect.
+       (wait): Rework.  Implement fifo_wait_for_next_client.  Handle signals
+       during connect better.  Add new fifo_wait_for_server code which polls
+       (sigh) waiting for server.
+       (fhandler_fifo::raw_read): Handle transition states when one client
+       closes and another is available.
+       (fhandler_fifo::close): Define.
+       (fhandler_fifo::dup): Ditto.
+       (fhandler_fifo::close_on_exec): Ditto.
+
+2009-07-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (internal_setlocale): Fix typo in GBK codepage.
+
+2009-07-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (unlink_nt): Ignore sharing violation on NFS.  Align
+       comments.
+
+2009-07-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.h (fs_info::fsn): New member.
+       (fs_info::clear): Clear fsn.
+       (fs_info::fsname): New read accessor for fsn.
+       * mount.cc (fs_info::update): Fill in fsn member with lowercased
+       filesystem name if filesystem is not well-known.  Fall back to
+       "unknown" if filesystem name is missing.
+       (fillout_mntent): Print filesystem name retrieved in fs_info::update
+       rather than static string "unknown".
+
+2009-07-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.cc (fs_info::update): Revert to open filesystem with access set
+       to READ_CONTROL.  If that fails, try additionally with FILE_READ_DATA.
+
+2009-07-22  Eric Blake  <ebb9@byu.net>
+
+       * exceptions.cc (handle_exceptions): Set si_addr according to
+       POSIX for SIGSEGV.
+
+2009-07-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.cc (fs_info::update): Open filesystem with access set to 0.
+       Explain why.
+
+2009-07-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.cc: Revert accidental checkin.
+
+2009-07-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (symlink_info::check): Handle STATUS_NOT_SUPPORTED from
+       NtCreateFile just like STATUS_EAS_NOT_SUPPORTED.
+
+2009-07-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.cc (fillout_mntent): Fix typo (noexec -> notexec).
+
+2009-07-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (symlink_info::check): Fix typo in comment.
+
+2009-07-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (enum del_lock_called_from): New enumeration.
+       (fhandler_base::del_my_locks): Declare taking a del_lock_called_from
+       as argument.
+       * fhandler.cc (fhandler_base::close): Call del_my_locks with "on_close".
+       (fhandler_base::fixup_after_fork): Call del_my_locks with "after_fork".
+       (fhandler_base::fixup_after_exec): Call del_my_locks with "after_exec".
+       * flock.cc (fhandler_base::del_my_locks): Take del_lock_called_from
+       as argument.  Call node->del_my_locks with NULL handle in after_exec
+       case.  Explain why.
+
+2009-07-21  Eric Blake  <ebb9@byu.net>
+
+       * dtable.cc (dup2): Correct return value for no-op.
+
+2009-07-21  Corinna Vinschen  <corinna@vinschen.de>
+           Eric Blake  <ebb9@byu.net>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Add special case
+       for MVFS.  Explain why.
+       (fhandler_disk_file::utimens): Drop local variables lastaccess and
+       lastwrite.  Copy timestamps right into FILE_BASIC_INFORMATION structure
+       to avoid copying them twice.
+
+2009-07-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * wincap.h (wincaps::has_always_all_codepages): New element.
+       * wincap.cc: Implement above element throughout.
+       * wchar.h (__sjis_mbtowc): Declare.
+       (__eucjp_mbtowc): Ditto.
+       (__gbk_mbtowc): Ditto.
+       (__kr_mbtowc): Ditto.
+       (__big5_mbtowc): Ditto.
+       * syscalls.cc (internal_setlocale): Convert to char * function.
+       Return parameter by default.  Return NULL if request to use a
+       charset can't be satisfied due to missing codepage support in the
+       underlying OS.  Fix comment.
+       (setlocale): Store original locale.  Restore to original locale if
+       internal_setlocale returns NULL.
+
+2009-07-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fork.cc (fork): Create local tmp_pathbuf.  Explain why.
+
+2009-07-18  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * exceptions.cc (sig_handle_tty_stop): Set stopsig to SIGCONT when
+       continuing.
+       (stopped_or_terminated): Honor WCONTINUED.
+       * wait.cc (wait4): Ditto.
+       * include/cygwin/wait.h (WCONTINUED): Define.
+       (__W_CONTINUED): Ditto.
+       (WIFCONTINUED): Ditto.
+
+2009-07-18  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * libstdcxx_wrapper.cc (operator delete): Remove stray space in
+       asm name.
+
+2009-07-17  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygtls.cc (_cygtls::init_exception_handler): Test for e, not e->prev
+       or we could still end up adding our handler twice.  Add comment
+       explaining what we're doing.
+       * dll_init.cc (dll_dllcrt0_1): Clarify comment.
+
+2009-07-17  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygtls.cc (_cygtls::init_exception_handler): Avoid adding our
+       exception handler twice.
+
+2009-07-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (unlink_nt): Just return when a sharing violation
+       occurs on remote filesystems.
+
+2009-07-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * globals.cc: Improve comment on R/O UNICODE_STRINGs.
+       * mount.h (class fs_info): Add is_mvfs bit.
+       * mount.cc (fs_info::update): Recognize MVFS remote filesystem.
+       (fillout_mntent): Reorder filesystem checks for speed.  Add
+       mvfs, unixfs, and sunwnfs filesystem types.
+       * path.h (class path_conv): Add fs_is_mvfs method.
+       * path.cc (symlink_worker): On MVFS, always create symlinks as
+       Windows shortcuts.  Explain why.
+
+2009-07-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (unlink_nt): First remove the R/O DOS attribute with
+       FILE_WRITE_ATTRIBUTES access only, then re-open the file for DELETE.
+       Explain why.
+
 2009-07-16  Corinna Vinschen  <corinna@vinschen.de>
 
        * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Remove file
        * ntdll.h (PROCESSINFOCLASS): Remove unneeded trailing comma.
 
        * pinfo.cc (_pinfo::dup_proc_pipe): Remove unneeded assignment.
-       
+
        * sigproc.cc (sig_send): Don't send signal to myself if this is an exec
        stub.
 
 
        * fhandler_clipboard.cc: Avoid calling system_printf.
        (set_clipboard): Add basic error checking.  Set errno here.  Per MSDN,
-       don't call GlobalFree on data block transferred to clipboard. 
+       don't call GlobalFree on data block transferred to clipboard.
        (fhandler_dev_clipboard::write): Drop setting errno after call to
        set_clipboard.
        (fhandler_dev_clipboard::read): Add basic error checking. Simplify code.
 
        * flock.cc (lf_setlock): Handle border case which results in WFMO loop
        exiting with ret == WAIT_TIMEOUT gracefully.  Add a system_printf to
-       uncover other potential problems with WFMO loop. 
+       uncover other potential problems with WFMO loop.
 
 2009-04-18  Christopher Faylor  <me+cygwin@cgf.cx>
 
 2009-04-15  Corinna Vinschen  <corinna@vinschen.de>
 
        * path.cc (path_conv::get_wide_win32_path): Allow relative paths.
-       (cygwin_conv_path): In case of CCP_POSIX_TO_WIN_W, convert relative 
+       (cygwin_conv_path): In case of CCP_POSIX_TO_WIN_W, convert relative
        paths to absolute paths if the relative pathname length exceeds
        MAX_PATH.
 
 
        * path.cc (symlink_worker): Write target filename as UTF-16 string
        with leading BOM marker.
-       (symlink_info::check_shortcut): If check for leading BOM marker 
+       (symlink_info::check_shortcut): If check for leading BOM marker
        succeeds, read filename as UTF-16 string.
        (symlink_info::check_sysfile): Ditto.