newlib/winsup/cygwin/ChangeLog-2013
Christopher Faylor 36383c6f6e * fhandler.h: Update copyright.
(cltype): New enum.
(dev_console::console_attrs): Define struct name.
(dev_console::console_attrs::set_cl_x): New function.
(dev_console::console_attrs::set_cl_y): New function.
(fhandler_console::clear_screen): Redefine input params.
* fhandler_console.cc: Update copyright.  Throughout, reflect change in
arguments to fhandler_console::clear_screeen.
(fhandler_console::mouse_aware): Simplify logic slightly.
(fhandler_console::scroll_screen): Remove hopefully obsolete win95 code.
(dev_console::console_attrs::set_cl_x): New function.
(dev_console::console_attrs::set_cl_y): New function.
(fhandler_console::clear_screen): Redefine input params.  Calculate position
based on enum value.
(region_split): Change arguments.  Simplify.
(ReadConsoleOutputWrapper): Remove coord argument since we now always use 0, 0.
Send extra arguments to region_split.
2014-01-04 23:58:32 +00:00

2079 lines
79 KiB
Plaintext

2013-12-31 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler_console.cc (region_split): New function.
(delta): Ditto.
(ReadConsoleOutputWrapper): Ditto.
(fhandler_console::char_command): Use ReadConsoleOutputWrapper to avoid
OOM condition from ReadConsoleOutputW. Add more debugging.
2013-12-22 Christopher Faylor <me.cygwin2013@cgf.cx>
* strace.cc (strace::vsprntf): Fix potential (if unlikely) use of
uninitialized variable.
2013-12-18 Christopher Faylor <me.cygwin2013@cgf.cx>
* dcrt0.cc (dll_crt0_1): Remove NtSetTimerResolution.
* pinfo.cc (pinfo::init): Increase wait interval when waiting for
procinfo to stabilize.
2013-12-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* autoload.cc (timeBeginPeriod): Delete.
* dcrt0.cc (dll_crt0_1): Use NtSetTimerResolution rather than
timeBeginPeriod.
2013-12-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* autoload.cc (timeBeginPeriod): Autoload.
* dcrt0.cc (dll_crt0_1): Use timeBeginPeriod to set default resolution
to 1 ms.
* pinfo.cc (pinfo::thisproc): Set ppid for redirected _pinfo blocks too.
(pinfo::init): Avoid using VirtualQuery. Just rely on the assumption that
procinfo will be populated.
* pinfo.h (_pinfo::ppid): Move into redirected block.
2013-12-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* external.cc (fillout_pinfo): Remove nonsensical loop.
* fork.cc (frok::parent): When initializing pinfo for child new PID_NEW
flag + actual defined constant rather than raw number. Don't set
start_time here.
* pinfo.cc (pinfo::thisproc): Use PID_NEW when initializing pinfo.
Avoid checking h for NULL multiple times. Don't set start_time here.
(pinfo_init): Aways set ppid last. Tweak strace output.
(pinfo::init): Handle new PID_NEW flag. Wait for shared memory to
contain useful information. Set start_time if PID_NEW.
(_onreturn:h): Define as HANDLE rather than HANDLE *.
(_onreturn::~onreturn): Accommodate h definition change.
(_onreturn::no_close_handle): Rename from no_close_p_handle. Take a
pinfo arg and set hProcess to h before zeroing.
(winpids::add): Don't open a handle to our own process. Change logic
associated with when a handle gets closed. Accommodate no_close_handle
changes.
(winpids::enum_processes): Simplify process enumeration loop.
(winpids::set): Eliminate ill-considered malloc locking.
* sigproc.cc (proc_subproc): Always set ppid last.
2013-12-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (sig_send): Set PIPE_NOWAIT for pipes which are not us.
2013-12-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler.h (fhandler_pty_master::~fhandler_pty_master): Delete.
* fhandler_tty.cc (fhandler_pty_master::~fhandler_pty_master): Ditto.
2013-12-11 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (NT_TRANSACTIONAL_ERROR): Define.
(stop_transaction): Take "trans" HANDLE by reference and set it to
NULL after closing it.
(unlink_nt): If NtOpenFile fails due to a transactional error, stop
transaction and retry NtOpenFile. Simplify check for having to call
stop_transaction.
(rename): If NtOpenFile fails due to a transactional error, stop
transaction and retry NtOpenFile in both affected cases. Simplify check
for having to call stop_transaction and add comment from unlink_nt.
2013-12-11 Corinna Vinschen <corinna@vinschen.de>
* mount.cc (fs_info::update): Fix formatting.
2013-12-10 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_dev_clipboard): Add private member
cygnativeformat. Declare private method set_clipboard.
* fhandler_clipboard.cc (cygnativeformat): Convert static variable to
fhandler_dev_clipboard member.
(fhandler_dev_clipboard::set_clipboard): Convert from static function
to fhandler_dev_clipboard method.
2013-12-09 Christopher Faylor <me.cygwin2013@cgf.cx>
* globals.cc (hntdll): Define/declare.
* exceptions.cc (inside_kernel): Don't call GetModuleFileName if we
know we're in ntdll.
* sigproc.cc (wait_sig): Initialize hntdll.
2013-12-09 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/stdlib.h (initstate, random, setstate, srandom):
Harden _XOPEN_SOURCE guard against applications defining _XOPEN_SOURCE
with empty value.
2013-12-08 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 28.
2013-12-07 Corinna Vinschen <corinna@vinschen.de>
* path.cc (symlink_native): Workaround Windows 8.1 bug: Drop long path
prefix from symlink target path. Add comment to explain why.
2013-12-06 Christopher Faylor <me.cygwin2013@cgf.cx>
* syscalls.cc (dup): Use cygheap_fdnew properly.
2013-12-05 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygheap.h (cygheap_fdnew): Avoid setting errno directly since it will
have been set by a previous function.
* dtable.h (dtable::extend): Accept second size_t argument.
* dtable.cc (dtable::extend): Accept second "min" argument which allows
checking for OPEN_MAX_MAX boundary conditions.
(dtable_init): Accommodate second argument to dtable::extend.
(dtable::find_unused_handle): Ditto.
* syscalls.cc (setdtablesize): Ditto.
(dup): Return any error passed by cygheap_fdnew() directly.
(getdtablesize): Just return dtable size directly.
2013-12-04 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.cc (dtable::find_unused_handle): When extending, always make
sure that there is a NOFILE_INCR chunk following the free fd.
2013-12-03 Christopher Faylor <me.cygwin2013@cgf.cx>
* select.cc (select): Add workaround for, as yet undebugged,
pathological case.
2013-12-01 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.cc (dtable::find_unused_handle): Break out of the right loop.
2013-12-01 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.cc (dtable::find_unused_handle): Fix off-by-one error. Always
exit through the bottom.
(cygwin_attach_handle_to_fd): Make sure that fd tab is locked for the
duration of this function.
* dtable.h (dtable::lock): Make public.
(dtable::unlock): Ditto.
(dtable): Remove friends.
2013-12-01 Corinna Vinschen <corinna@vinschen.de>
* dtable.cc (dtable::extend): Change local variable new_size to size_t
as well.
* thread.cc: Fix comment.
2013-11-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.h (dtable::first_fd_for_open): Change declaration to size_t.
(dtable::extend): Change parameter to size_t.
(dtable::find_unused_handle): Ditto.
* dtable.cc: Remove now-unused header.
(dtable::extend): Remove pointless test. Change parameter to size_t.
(dtable::find_unused_handle): Rework to avoid MAX calculation in
extend() call. Change parameter to size_t.
2013-11-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.cc (build_fh_pc): When creating an archetype, use native name
rather than unix name if name doesn't exist.
2013-11-29 Christopher Faylor <me.cygwin2013@cgf.cx>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 27.
2013-11-29 Jon TURNEY <jon.turney@dronecode.org.uk>
* include/cygwin/stdlib.h (initstate, random, setstate, srandom):
Prototype if not __STRICT_ANSI__ or _XOPEN_SOURCE is defined
appropriately.
2013-11-28 Alexey Pavlov <alexpux@gmail.com>
* include/glob.h: Fix invalid use of 'restrict' error.
2013-11-27 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (try_to_bin): Enhance debug output in case reopen fails.
2013-11-27 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (try_to_bin): Drop fh_dup, reuse tmp_fh instead.
2013-11-27 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (try_to_bin): Take additional parameter to get file open
flags. If the file to move to the bin has been opened casesensitive,
reopen it caseinsensitive. Explain why. Revert the default name of
the Vista-and-later recycler to mixed case for readability.
(unlink_nt): Call try_to_bin with file open flags as evaluated.
2013-11-26 Corinna Vinschen <corinna@vinschen.de>
* nlsfuncs.cc (wcscoll): Add "__restrict" to definition.
(wcsxfrm): Ditto.
2013-11-26 Corinna Vinschen <corinna@vinschen.de>
* common.din: Export posix_spawn[...] functions.
* exec.cc (execve): Add EXPORT_ALIAS _execve.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
* posix.sgml (std-susv4): Add posix_spawn[...] here.
(std-notimpl): Drop here.
2013-11-26 Corinna Vinschen <corinna@vinschen.de>
* nlsfuncs.cc (strcoll): Add "__restrict" to definition.
(strxfrm): Ditto.
2013-11-25 Corinna Vinschen <corinna@vinschen.de>
Throughout, keep function definitions and declarations in sync with
newlib in terms of C99 "restrict" keyword.
2013-11-24 Corinna Vinschen <corinna@vinschen.de>
* dtable.cc: Include sys/param.h for MAX definition.
2013-11-24 Corinna Vinschen <corinna@vinschen.de>
Throughout, drop unnecessary explicit includes of windows header files
included by default.
* winlean.h: Add long comment to explain why we have to define certain
symbols.
(_NORMALIZE_): Define.
(_WINNLS_): Drop definition and subsequent undef.
(_WINNETWK_): Ditto.
(_WINSVC_): Ditto.
2013-11-23 Eric Blake <eblake@redhat.com>
dup2: fix off-by-one crash
* dtable.cc (dup3): Fix off-by-one.
(find_unused_handle): Reduce time spent expanding during dup.
* syscalls.cc (setdtablesize): Report error on invalid value.
2013-11-20 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/stdlib.h (realpath): Drop declaration. It's declared
in newlib's stdlib.h now.
2013-11-19 Corinna Vinschen <corinna@vinschen.de>
* ntdll.h (RtlGetVersion): Declare.
* wincap.cc (wincapc::init): Rather than GetVersionEx, call
RtlGetVersion which is not crippled by missing Windows 8.1 manifest.
* wincap.h (wincapc): Change type of version to RTL_OSVERSIONINFOEXW.
Align formatting of all class members.
2013-11-19 Corinna Vinschen <corinna@vinschen.de>
* wincap.cc (wincapc::init): Revert previous change. It's not working.
2013-11-19 Corinna Vinschen <corinna@vinschen.de>
* net.cc (cygwin_getaddrinfo): Fix a comment. Only memset whints if
hints is NULL. Add a comment and set whints.ai_family explicitely to
AF_UNSPEC to follow glibc man page closely. Check flags against whints
for locality.
2013-11-19 Corinna Vinschen <corinna@vinschen.de>
* wincap.cc (wincapc::init): Fix dwMinorVersion for Windows 8.1 and
Server 2012. Explain why this is necessary.
2013-11-19 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (IdnToAscii): Define.
(IdnToUnicode): Define.
(FreeAddrInfoW): Define.
(GetAddrInfoW): Define.
(GetNameInfoW): Define.
* net.cc: Drop W. Richard STEVENS libgai implementation.
(cygwin_freeaddrinfo): Move code from ipv4_freeaddrinfo here. Move
definition up in file to avoid forward declaration in ga_duplist.
(ga_dup): Take addrinfoW as input. Add parameters to get IDN flags
and to set error value. Handle IDN flags and especially AI_CANONIDN.
Convert input wchar_t ai_canonname string to multibyte for output.
(ga_duplist): Add parameters to get IDN flags and to set error value
and propagate to ga_dup. Call cygwin_freeaddrinfo.
(gai_errmap): Add comments. Align error strings to GLibc. Add
EAI_IDN_ENCODE entry.
(get_ipv6_funcs): Remove.
(load_ipv6_guard): Remove.
(ipv6_inited): Remove.
(load_ipv6): Remove.
(load_ipv6_funcs): Remove.
(cygwin_getaddrinfo): Drop calling load_ipv6. Handle AI_IDN* flags.
Convert input strings to wchar_t and call GetAddrInfoW/FreeAddrInfoW.
In case hints is NULL, set default ai_flags explicitely to
AI_V4MAPPED | AI_ADDRCONFIG, as documented for Glibc. Only add AI_ALL
if AI_ADDRCONFIG is not given. Unconditionally add Windows-specific
AI_DISABLE_IDN_ENCODING to ai_flags to make IDN behaviour compatible
to Glibc even on Windows 8 and later.
(cygwin_getnameinfo): Drop calling load_ipv6. Handle NI_IDN* flags.
Call GetNameInfoW and convert returned strings from wchar_t to
multibyte.
* include/netdb.h: Add comments to describe flags and error values.
(AI_*): Define all flags using hex values for clearness.
(AI_IDN): Define.
(AI_CANONIDN): Define.
(AI_IDN_ALLOW_UNASSIGNED): Define.
(AI_IDN_USE_STD3_ASCII_RULES): Define.
(NI_*): Define all flags using hex values for clearness.
(NI_IDN): Define.
(NI_IDN_ALLOW_UNASSIGNED): Define.
(NI_IDN_USE_STD3_ASCII_RULES): Define.
(EAI_IDN_ENCODE): Define.
2013-11-06 Christopher Faylor <me.cygwin2013@cgf.cx>
* configure.ac: Detect windows headers/libs after we've figured out the
C compiler.
* configure: Regenerate.
* aclocal.m4: Regenerate.
2013-10-30 Corinna Vinschen <corinna@vinschen.de>
* devices.in (dev_cygdrive_storage): Revert mapping to \Device\Null.
(dev_storage): Ditto for /dev.
* devices.cc: Regenerate.
* fhandler.cc (fhandler_base::open_null): New method to open a fake
\Device\Null handler.
(fhandler_base::open): Fix formatting. Change O_ACCMODE test to a
switch statement. Simplify a test which still tested for a now unused
create_disposition.
* fhandler.h (fhandler_base::open_null): Declare.
(fhandler_netdrive::close): Declare.
* fhandler_dev.cc (fhandler_dev::open): Open fake \Device\Null handle
by just calling new open_null method.
* fhandler_disk_file.cc (fhandler_cygdrive::open): Ditto.
* fhandler_netdrive.cc (fhandler_netdrive::open): Call open_null
rather than setting nohandle.
(fhandler_netdrive::close): New method.
* fhandler_registry.cc (fetch_hkey): Fix token in RegOpenUserClassesRoot
call. Create valid key for HKEY_CURRENT_CONFIG by mapping to real key
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware Profiles\Current.
(fhandler_registry::open): Set nohandle only when using pseudo registry
handle.
* fhandler_virtual.cc (fhandler_virtual::opendir): Call open rather
than just setting nohandle here.
* fhandler_virtual::fstatvfs): Set ST_RDONLY fs flag.
* globals.cc (ro_u_null): New readonly UNICODE_STRING for \Device\Null.
* path.h (path_conv::set_path): Revert previous change caring for
wide_path.
2013-10-30 Corinna Vinschen <corinna@vinschen.de>
* devices.in (dev_cygdrive_storage): Map to \Device\Null.
(dev_storage): Map /dev and /dev/windows to \Device\Null.
* devices.cc: Regenerate.
* dir.cc (opendir): Create unique id. Explain why.
* fhandler.h (fhandler_dev::get_dev): Implement inline.
(fhandler_cygdrive::close): Drop declaration.
(fhandler_cygdrive::get_dev): Implement inline.
(fhandler_windows::get_hwnd): Ditto.
(fhandler_windows::set_close_on_exec): Drop declaration.
(fhandler_windows::fixup_after_fork): Ditto.
* fhandler_dev.cc (fhandler_dev::open): Call fhandler_disk_file::open
without O_CREAT flag. Explain why. Create \Device\Null handle if
/dev/ doesn't actually exist.
(fhandler_dev::close): Drop nohandle case.
(fhandler_dev::fstatvfs): Drop nohandle check. Test for fs_got_fs
instead. Set ST_RDONLY fs flag for simulated /dev.
(fhandler_dev::opendir): If /dev doesn't exist, call open() to create
fake \Device\Null handle. Don't set nohandle. Set dir_exists
correctly.
(fhandler_dev::rewinddir): Call fhandler_disk_file::rewinddir only if
/dev is a real directory.
* fhandler_disk_file.cc (fhandler_disk_file::opendir): If called for
the cygdrive dir, call open() to create fake \Device\Null handle.
Only attach __DIR_mounts buffer to dir if not called for cygdrive dir.
Don't set nohandle.
(fhandler_cygdrive::open): Create \Device\Null handle.
(fhandler_cygdrive::close): Remove.
(fhandler_cygdrive::fstatvfs): Set ST_RDONLY fs flag.
* fhandler_windows.cc (fhandler_windows::open): Create \Device\Null
handle.
(fhandler_windows::read): Don't add io_handle to WFMO handle array.
Change subsequent test for return value accordingly. Fix test for
"message arrived".
(fhandler_windows::set_close_on_exec): Remove.
(fhandler_windows::fixup_after_fork): Remove.
* path.h (path_conv::set_path): Make sure wide_path is NULL when
setting a new path.
* select.cc (peek_windows): Use correct hWnd value, not io_handle.
(fhandler_windows::select_read): Don't use io_handle as wait object.
(fhandler_windows::select_write): Ditto.
(fhandler_windows::select_except): Ditto.
2013-10-27 Corinna Vinschen <corinna@vinschen.de>
* exception.h: Fold in content of include/exceptions.h.
* include/exceptions.h: Remove.
2013-10-26 Corinna Vinschen <corinna@vinschen.de>
* devices.in (dev_storage): Map /dev/dsp to \Device\Null.
* devices.cc: Regenerate.
* fhandler_dsp.cc (fhandler_dev_dsp::open): Call fhandler_base::open.
(fhandler_dev_dsp::close): Call fhandler_base::close.
(fhandler_dev_dsp::fixup_after_fork): Call
fhandler_base::fixup_after_fork.
* fhandler_raw.cc (fhandler_dev_raw::fixup_after_fork): Call
fhandler_base::fixup_after_fork.
2013-10-26 Corinna Vinschen <corinna@vinschen.de>
* exception.h (_exception_list): Drop redefinition for x86_64.
* include/exceptions.h: Disable content for x86_64 since it's not
using frame based exception handling anymore.
2013-10-25 Corinna Vinschen <corinna@vinschen.de>
* flock.cc (fhandler_base::lock): Only refuse to lock nohandle and
old-style console devices when called to perform BSD flock locking.
Add a FIXME to comment and align description.
* ntdll.h (THREADINFOCLASS): Following MSDN, rename throughout from
THREAD_INFORMATION_CLASS.
2013-10-25 Corinna Vinschen <corinna@vinschen.de>
* devices.in (dev_storage): Map /dev/clipboard to \Device\Null.
* devices.cc: Regenerate.
* fhandler.h (fhandler_dev_clipboard::open): Drop declaration.
* fhandler_clipboard.cc (fhandler_dev_clipboard::dup): Drop call to
open. Set private members to 0 and call fhandler_base::dup.
(fhandler_dev_clipboard::open): Remove so that default
fhandler_base::open is used to open \Device\Null.
(set_clipboard): Drop gratuitios call to RegisterClipboardFormatW.
(fhandler_dev_clipboard::close): Call fhandler_base::close from here.
2013-10-25 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::fstat_fs): Fix comment.
2013-10-25 Corinna Vinschen <corinna@vinschen.de>
* fhandler_clipboard.cc (fhandler_dev_clipboard::open): Drop gratuitios
handling of membuffer. It's NULL anyway.
(fhandler_dev_clipboard::lseek): Set membuffer to NULL after freeing
it to avoid subsequent crashes when accessing invalid pointer.
2013-10-25 Corinna Vinschen <corinna@vinschen.de>
* devices.in (dev_storage): Map /dev/random and /dev/urandom to
\Device\Null.
* devices.cc: Regenerate.
* fhandler.h (fhandler_dev_random::open): Drop declaration.
(fhandler_dev_random::close): Ditto.
(fhandler_dev_random::crypt_gen_random): Convert to static method.
* fhandler_random.cc (fhandler_dev_random::open): Remove so that default
fhandler_base::open is used to open \Device\Null.
(fhandler_dev_random::close): Ditto.
* fhandler_socket.cc (entropy_source): Delete.
(fhandler_socket::af_local_set_secret): Remove entropy_source code and
call fhandler_dev_random::crypt_gen_random directly instead.
2013-10-24 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_dev_zero::lseek): Convert to inline method.
(class fhandler_dev_random): Drop dummy_offset.
(fhandler_dev_random::lseek): Convert to inline method.
(fhandler_dev_dsp::lseek): Ditto.
* fhandler_dsp.cc (fhandler_dev_dsp::lseek): Drop here.
* fhandler_random.cc (fhandler_dev_random::open): Drop setting
dummy_offset.
(fhandler_dev_random::lseek): Drop here.
* fhandler_tape.cc (fhandler_dev_tape::lseek): Make no-op, but keep
old code for reference.
* fhandler_zero.cc (fhandler_dev_zero::lseek): Drop here.
2013-10-24 Christopher Faylor <me.cygwin2013@cgf.cx>
* external.cc (fillout_pinfo): If start_time is 0, wait a while before
returning the pinfo structure.
* fhandler.cc (fhandler_base::open_setup): Convert from inline.
* fhandler.h (fhandler_base::open_setup): Declare.
* fhandler_console.cc (fhandler_console::open_setup): Always call
fhandler_base::open_setup.
* fhandler_tty.cc (fhandler_pty_slave::open_setup): Ditto.
(fhandler_pty_master::open_setup): Ditto.
2013-10-24 Corinna Vinschen <corinna@vinschen.de>
* devices.in (dev_storage): Map /dev/zero and /dev/full to \Device\Null.
* devices.cc: Regenerate.
* dtable.h (struct dtable): Make fhandler_base friend, rather
than fhandler_disk_file.
* fhandler.cc (fhandler_base::open_with_arch): Create unique id.
(fhandler_base::cleanup): Call del_my_locks.
(fhandler_base::fcntl): Handle F_GETLK, F_SETLK and F_SETLKW.
* fhandler.h (fhandler_base::get_dev): Return real device number.
(fhandler_base::set_unique_id): New inline method.
(fhandler_disk_file::lock): Drop declaration.
(fhandler_disk_file::get_dev): New method, return pc.fs_serial_number.
(fhandler_dev_zero::open): Drop declaration.
* fhandler_disk_file.cc (fhandler_disk_file::close): Move
del_my_locks call to fhandler_base::open_with_arch.
(fhandler_disk_file::fcntl): Move handling of locking commands to
fhandler_base::fcntl.
(fhandler_base::open_fs): Drop call to NtAllocateLocallyUniqueId.
* fhandler_zero.cc (fhandler_dev_zero::open): Remove so that default
fhandler_base::open is used to open \Device\Null.
* flock.cc (fixup_lockf_after_exec): Finding a single fhandler is
enough here.
(fhandler_base::lock): Replace fhandler_disk_file::lock. Refuse to lock
nohandle devices. Handle read/write test using POSIX flags. Explain
why. Never fail on SEEK_CUR or SEEK_END, rather assume position 0,
just as Linux.
* net.cc (fdsock): Create unique id.
2013-10-23 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/config.h (_READ_WRITE_BUFSIZE_TYPE): Define.
2013-10-23 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::fstat): Drop FH_FULL case to align
/dev/full permissions to Linux.
2013-10-22 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler.h (fhandler_base::cleanup): Mark as extern rather than
inline.
* fhandler_base.cc (fhandler_base::cleanup): Define.
* fhandler_tty.cc (fhandler_pty_slave::cleanup): Call fhandler_base::cleanup.
(fhandler_pty_master::cleanup): Ditto.
2013-10-18 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler_termios.cc (tty_min::kill_pgrp): Don't send a signal to
myself if this process is exiting.
2013-10-18 Christopher Faylor <me.cygwin2013@cgf.cx>
* tty.cc (tty_list::allocate): Set sid to 0 rather than -1 since -1 is
an error condition.
2013-10-16 Corinna Vinschen <corinna@vinschen.de>
* fhandler_process.cc (format_process_ctty): Fix random content of
/proc/$PID/ctty if the process has no controlling tty. Set to just
"\n" instead.
2013-10-15 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (CryptAcquireContextW): Remove.
(CryptGenRandom): Remove.
(CryptReleaseContext): Remove.
(SystemFunction036): Define. Add comment to explain that this is
actually the RtlGenRandom function.
* fhandler.h (class fhandler_dev_random): Drop crypt_prov member.
(fhandler_dev_random::fhandler_dev_random): Define inline.
(fhandler_dev_random::dup): Drop declaration.
* fhandler_random.cc (fhandler_dev_random::fhandler_dev_random): Remove
here.
(fhandler_dev_random::crypt_gen_random): Use RtlGenRandom to drop
dependency to old Crypto API.
(fhandler_dev_random::read): Implement an enhanced version of reading
random bytes from RtlGenRandom for the sake of a better /dev/random
emulation.
(fhandler_dev_random::close): Just return 0 since crypt_prov doesn't
exisyt anymore.
(fhandler_dev_random::dup): Drop entirely for the same reason.
2013-10-15 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (mmap64): Convert pagesize from DWORD to size_t to avoid
a rounding error for allocations beyond 4 Gigs.
2013-10-05 Christopher Faylor <me.cygwin2013@cgf.cx>
* ntdll.h: Guard against new header files.
2013-09-25 Christopher Faylor <me.cygwin2013@cgf.cx>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 26.
2013-09-25 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.h (hold_everything::ischild): Declare as reference.
(hold_everything::hold_everything): Store address of caller's notion of
"ischild".
2013-09-25 Christopher Faylor <me.cygwin2013@cgf.cx>
Paul Kunysch <paul.kunysch@emsys.de>
* thread.cc (semaphore::_getvalue): Set *sval as appropriate. Set
errno and return -1 on error.
2013-08-31 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Belatedly bump
to 25.
2013-08-31 Corinna Vinschen <corinna@vinschen.de>
* heap.cc (RAISEHEAP_SIZE): New definition.
(user_heap_info::sbrk): Make failed commit an error condition again.
Only reserve RAISEHEAP_SIZE sized chunk for further heap reservations
by default.
2013-08-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygheap.h (user_heap_info::sbrk): Declare new function.
(user_heap_info::init): Ditto.
* heap.cc (user_heap_info::init): Rename from heap_init(). Avoid
explictly using cygheap->user_heap.
(sbrk): Use user_heap_info method via cygheap->user_heap.
(user_heap_info::sbrk): Renamed from sbrk(). Eliminate explicit use of
cygheap->user_heap. Change some pointer arithmetic to use (char *) for
consistency.
* shared.cc (shared_info::initialize): Change heap_init call to
cygheap->user_heap.init.
2013-08-30 Corinna Vinschen <corinna@vinschen.de>
* heap.cc (sbrk): Add a FIXME comment to VirtualFree call. Fix memory
reservation and commit strategy when more memory is requested than
available on the heap. Release newly reserved memory if commiting
it fails. Add more comments to explain what we do.
2013-08-30 Corinna Vinschen <corinna@vinschen.de>
* fhandler_tape.cc (mtinfo_drive::open): Handle bus reset gracefully
after opening the device.
2013-08-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (pending_signals::add): Properly maintain linked list.
(wait_sig): Use already calculated 'next' element when signal is
blocked.
2013-08-26 Corinna Vinschen <corinna@vinschen.de>
* mtinfo.h (class mtinfo_part): Change type of block numbers to int64_t.
(mtinfo_part::initialize): Ditto for nblock parameter in declaration.
(class mtinfo_drive): Change type of block number to int64_t. Change
all parameters indicating a block number to int64_t in method
declarations.
* fhandler_tape.cc (mtinfo_part::initialize): Ditto in definition.
(mtinfo_drive::get_pos): Ditto. Replace low and high with a
ULARGE_INTEGER and use it's components in call to GetTapePosition.
Store full value in block.
(mtinfo_drive::_set_pos): Change type of count parameter to int64_t.
Change call to SetTapePosition accordingly.
(mtinfo_drive::set_pos): Change type of count parameter to int64_t.
Change local variables holding block numbers accordingly.
(mtinfo_drive::get_status): Don't bail out early if fetching media
parameters fails.
(mtinfo_drive::ioctl): Add explicit cast matching receiving type in
MTTELL and MTIOCPOS calls.
2013-08-23 Corinna Vinschen <corinna@vinschen.de>
* flock.cc (lockf_t::from_obj_name): Fix test for valid pid.
2013-08-23 Christopher Faylor <me.cygwin2013@cgf.cx>
* spawn.cc (child_info_spawn): Revert previous change. Always set
lpReserved2.
2013-08-23 Christopher Faylor <me.cygwin2013@cgf.cx>
* child_info.h (PROC_MAGIC_GENERIC): Define differently for x86 vs.
x86_64.
2013-08-23 Corinna Vinschen <corinna@vinschen.de>
* path.h (enum path_types): Drop definition of PATH_64BITEXEC.
(path_conv::iscygexec32): Drop unused inline function.
(path_conv::iscygexec64): Ditto.
(path_conv::set_cygexec): Remove unnecessary setting of PATH_64BITEXEC.
* spawn.cc (child_info_spawn::worker): Disable setting of
STARTUPINFOW::lpReserved2 and STARTUPINFOW::cbReserved2 for non-Cygwin
child processes. Explain why.
2013-08-21 Corinna Vinschen <corinna@vinschen.de>
* fhandler_tape.cc (mtinfo_drive::create_partitions): Allow partitioning
of drives supporting select partitions.
(mtinfo_drive::get_status): Fill in current partition and number of
partitions on tape into mt_resid.
* include/cygwin/mtio.h (struct mtget): Align mt_resid comment to
aforementioned change.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
2013-08-20 Corinna Vinschen <corinna@vinschen.de>
* fhandler_tape.cc (mtinfo_drive::create_partitions): Fix long-standing
bug disabling creation of two partitions on drives supporting initiator
partitions.
(mtinfo_drive::set_blocksize): Update media information after setting
blocksize succeeded.
(mtinfo_drive::get_status): Fetch fresh media information.
2013-08-19 Corinna Vinschen <corinna@vinschen.de>
* lc_msg.h: Regenerate.
* nlsfuncs.cc (__get_lcid_from_locale): Update list of Script-only
locales to Windows 8.
(__set_charset_from_locale): Take locales added with Windows 8 and 8.1
into account.
2013-08-19 Corinna Vinschen <corinna@vinschen.de>
* fhandler_tape.cc (mtinfo_drive::set_pos): Remove unneeded linebreak.
(mtinfo_drive::get_status): Drop using get_ll when it's not required.
2013-08-14 Corinna Vinschen <corinna@vinschen.de>
* include/sys/cygwin.h (struct per_process): Add posix_memalign. Reduce
size of unused2 accordingly.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
* lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Initialize
u->posix_memalign with address of posix_memalign.
* malloc_wrapper.cc (posix_memalign): Call user-provided posix_memalign
rather than just returning ENOSYS.
* globals.cc (__cygwin_user_data): Initialize posix_memalign member.
2013-08-09 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 24.
2013-08-07 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::open_fs): Fix indentation.
2013-07-31 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler_tty.cc: Revert accidental checkin.
* update-copyright: Ditto.
2013-07-31 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygheap.cc (cmalloc): Use size_t for size field.
(cmalloc_abort): Ditto.
(crealloc): Ditto.
(crealloc_abort): Ditto.
(ccalloc): Ditto.
(ccalloc_abort): Ditto.
* cygheap_malloc.h (HEAP_USER): Add.
(cmalloc): Use size_t for size field in declaration.
(cmalloc_abort): Ditto.
(crealloc): Ditto.
(crealloc_abort): Ditto.
(ccalloc): Ditto.
(ccalloc_abort): Ditto.
2013-07-31 Corinna Vinschen <corinna@vinschen.de>
* path.cc (normalize_posix_path): Don't check existence of / or // dir
in parent dir check.
2013-07-26 Christopher Faylor <me.cygwin2013@cgf.cx>
* environ.cc (tty_is_gone): Delete.
(known): Delete tty, add wincmdln.
* globals.cc: Reorganize list of environment bools, remove explicit =
false for slight load time optimization.
(wincmdln): New global.
* spawn.cc (child_info_spawn::worker): Honor wincmdln.
2013-07-23 Corinna Vinschen <corinna@vinschen.de>
* ntdll.h (struct _SEMAPHORE_BASIC_INFORMATION): Define.
(enum _SEMAPHORE_INFORMATION_CLASS): Define.
(NtQuerySemaphore): Declare.
* thread.h (class semaphore): Add member startvalue.
(semaphore::fixup_before_fork): New inline method.
(semaphore::_fixup_before_fork): Declare.
* thread.cc (MTinterface::fixup_before_fork): Additionally call
semaphore::fixup_before_fork.
(semaphore::semaphore): Set currentvalue to -1. Set startvalue to
incoming initializer value.
(semaphore::_getvalue): Just query semaphore using NtQuerySemaphore
rather then using WFSO/Release.
(semaphore::_post): Drop setting currentvalue. It's not thread-safe.
(semaphore::_trywait): Ditto.
(semaphore::_timedwait): Ditto.
(semaphore::_wait): Ditto.
(semaphore::_fixup_before_fork): New method, setting currentvalue from
actual windows semaphore right before fork.
(semaphore::_fixup_after_fork): Drop kludge from 2013-07-10. Drop
FIXME comment.
2013-07-23 Corinna Vinschen <corinna@vinschen.de>
* cygtls.cc (well_known_dlls): Add kernelbase.dll.
2013-07-22 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 23.
2013-07-21 Corinna Vinschen <corinna@vinschen.de>
* regex/regcomp.c (wgetnext): Add a kludge to be more glibc compatible.
Add comment to explain.
2013-07-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (signal_exit): Remove comment. Use
__builtin_frame_address.
2013-07-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (signal_exit): Nope. Nevermind. Dump core
unconditionally.
2013-07-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (signal_exit): Add a FIXME comment.
2013-07-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (signal_exit): Only dump core when it's a "kernel"
signal. Only use RtlCaptureContext on x86_64. It doesn't seem to do
what's expected on x86.
2013-07-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* spawn.cc (child_info_spawn::worker): Reinstate using temp buffer for
wide character command-line storage. Use wcs method to convert command
line.
* winf.h (lb_wcs): Delete.
(linebuf::wcs): Implement new single-argument method.
2013-07-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* lib/libcmain.c (main): Don't point to last quoted character if the
only thing in the buffer is the program name.
2013-07-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* common.din: Export GetCommandLine{A,W}.
* kernel32.cc: Add includes needed for GetCommandLine functions.
(ucmd): New function.
(cygwin_GetCommandLineW): Ditto.
(cygwin_GetCommandLineA): Ditto.
* spawn.cc (child_info_spawn::worker): Rename one_line -> cmd. Use
lb_wcs macro to generate a wide character version of the line buffer.
Remove duplicate printing of command line. Don't access members of
linebuf directly.
* winf.h: Use pragma once.
(linebuf): Make storage private.
(linebuf::operator size_t): New operator. Return size of buf.
(linebuf::operator wchar_t): New operator.
(linebuf::wcs): New function.
(lb_wcs): New macro.
* include/cygwin/version.h: Bump API minor number to 268.
* strfuncs.cc: Clarify descriptive file comment.
2013-07-19 Corinna Vinschen <corinna@vinschen.de>
* cygtls.cc (_cygtls::remove): Close cw_timer handle, thus avoiding
handle leak.
2013-07-19 Jon TURNEY <jon.turney@dronecode.org.uk>
* cygserver_ipc.h (ipc_retval::ipc_retval): Take ssize_t as argument
to make sure entire ipc_retval union is initialized on all supported
platforms.
2013-07-18 Corinna Vinschen <corinna@vinschen.de>
* path.cc (normalize_posix_path): Start checking path before ".." at
dst, rather than at dst_start, otherwise suffer loss of one leading
slash in case of UNC paths.
2013-07-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* winsup.h (cygbench): Fix declaration to match definition.
* dcrt0.cc (initial_env): Remove unused variable.
2013-07-15 Corinna Vinschen <corinna@vinschen.de>
Remove /dev/mem, /dev/kmem, /dev/port support.
* Makefile.in (DLL_OFILES): Drop fhandler_mem.o.
(fhandler_mem_CFLAGS): Remove rule.
* devices.in (enum fh_devices): Remove FH_MEM, FH_KMEM and FH_PORT.
* devices.cc: Regenerate.
* dtable.cc (fh_alloc): Drop handling for FH_MEM, FH_KMEM and FH_PORT.
* fhandler.h (class fhandler_dev_mem): Remove.
* fhandler_mem.cc: Remove file.
* globals.cc (ro_u_pmem): Remove.
* mmap.cc (fhandler_dev_mem::mmap): Remove.
(fhandler_dev_mem::munmap): Remove.
(fhandler_dev_mem::fixup_mmap_after_fork): Remove.
2013-07-15 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 22.
2013-07-15 Corinna Vinschen <corinna@vinschen.de>
* path.cc (symlink_native): Fix common prefix search. Enhance comment.
2013-07-11 Corinna Vinschen <corinna@vinschen.de>
* uname.cc (uname): Drop unused code.
2013-07-10 Christopher Faylor <me.cygwin2013@cgf.cx>
* gentlsoffsets: Clean up a little.
* thread.cc (semaphore::_fixup_after_fork): Report on potential problem
parameter. Make sure that currentvalue is never zero.
(semaphore::init): Make cosmetic change.
2013-07-10 Corinna Vinschen <corinna@vinschen.de>
* cygwin.sc.in (.text.*): Fold into .text on all platforms.
(.eh_frame): Add section.
* environ.cc (my_findenv): Drop __stdcall attribute.
(getearly): Ditto.
(findenv_func): Drop cast.
2013-07-03 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler.cc (fhandler_base::close_with_arch): Make sure that the
archetype is deleted when close_with_arch is referenced *via* the
archetype.
2013-06-28 Corinna Vinschen <corinna@vinschen.de>
* path.cc (find_fast_cwd_pointer): Use gas syntax for assembler
description in all comments. Make algorithm work on Windows 8.1
Preview.
2013-06-27 Corinna Vinschen <corinna@vinschen.de>
* dcrt0.cc (child_info_fork::alloc_stack): Fix a comparison to avoid
taking 4K more stack in forked child.
* fork.cc (frok::parent): Print child exit code in hex if sync failed.
2013-06-24 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
* common.din (rawmemchr): Export.
* posix.sgml (std-gnu): Add rawmemchr.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
2013-06-21 Corinna Vinschen <corinna@vinschen.de>
* path.cc (cygwin_conv_path): Handle NULL "from" path gracefully.
* path.sgml (func-cygwin-conv-path): Document returning EINVAL if
"from" is NULL.
2013-06-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* winf.h (av::unshift): Make __reg2.
2013-06-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* spawn.cc (child_info_spawn::worker): Eliminate call to newargv.set()
in favor of conglomerated newargv.setup(). Let newargv.setup() decide
when to call dup_all(). Only set argc and argv for cygwin processes.
(av::setup): Rename from av::fixup. Accept argc and argv parameters.
Fill out argv and argc here. Duplicate whole argv structure when this
is a Cygwin executable.
* winf.cc (linebuf::fromargv): Don't bother duplicating argv elements
since they will never be used.
* winf.h (av::set): Delete.
(av::setup): Rename from av::fixup. Add two parameters.
(av::replace0_maybe): Assign calloced to 1 rather than 'true' for
clarity.
(av::dup_maybe): Delete.
(av::dup_all): Set calloced to show that we have duplicated all of the
arguments in the list.
2013-06-18 Corinna Vinschen <corinna@vinschen.de>
* nlsfuncs.cc (__collate_range_cmp): Convert input to wchar_t and call
wcscoll since all calling functions are using wide chars. Explain in
preceeding comment.
2013-06-18 Corinna Vinschen <corinna@vinschen.de>
* spawn.cc (child_info_spawn::worker): Eliminate wascygexec.
2013-06-18 Christopher Faylor <me.cygwin2013@cgf.cx>
* dcrt0.cc (child_info_fork::alloc_stack): Don't subtract 4096 from
stack pointer since getstack() already does that.
2013-06-18 Corinna Vinschen <corinna@vinschen.de>
* gmon.c: Drop gratuitous inclusion of strings.h. Remove __MINGW32__
around definition of bzero.
2013-06-18 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (VPATH): Drop CONFIG_DIR.
(EXTRA_DLL_OFILES): Remove.
(DLL_OFILES): Remove EXTRA_DLL_OFILES.
(ASFLAGS): Define as -D_WIN64 on x86_64.
(GMON_OFILES): Add mcountFunc.o.
($(srcdir)/$(TLSOFFSETS_H)): Use target_cpu rather than CONFIG_DIR.
* configure.ac (CONFIG_DIR): Remove definition.
* configure: Regenerate.
* gcrt0.c: Use latest version from Mingw-w64 project.
* gmon.c: Ditto.
* gmon.h: Ditto.
* mcount.c: Ditto.
* mcountFunc.S: Ditto, new file.
* profil.c: Ditto.
* profil.h: Ditto.
* config: Remove entire directory.
2013-06-17 Corinna Vinschen <corinna@vinschen.de>
* path.cc (cnt_bs): New inline function.
(symlink_native): Fix creating relative native symlink.
2013-06-17 Corinna Vinschen <corinna@vinschen.de>
* fhandler_clipboard.cc (fhandler_dev_clipboard::read): Fix buffer
read access overrun when pos > 0.
2013-06-17 Corinna Vinschen <corinna@vinschen.de>
* times.cc (GetSystemTimePreciseAsFileTime): Add comment to declaration.
(__to_clock_t): Remove a debug_printf.
(times): Align syscall_printf to debug output of other system calls.
2013-06-14 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (GetSystemTimePreciseAsFileTime): Define.
* times.cc (GetSystemTimePreciseAsFileTime): Temporarily declare here
to workaround missing definition in 32 bit w32api headers.
(get_system_time): New always inline function to call either
GetSystemTimePreciseAsFileTime or GetSystemTimeAsFileTime on a per OS
basis. Call throughout instead of GetSystemTimeAsFileTime.
* wincap.h (wincaps::has_precise_system_time): New element.
* wincap.cc: Implement above element throughout.
2013-06-14 Corinna Vinschen <corinna@vinschen.de>
Streamline time/times functionality. Remove last remains of former
Windows 9x compatibility.
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Drop now unneeded
casts in calls to_timestruc_t.
(fhandler_base::utimens_fs): Ditto for timespec_to_filetime.
* fhandler_proc.cc (format_proc_stat): Ditto for to_time_t.
* hires.h (class hires_ms): Remove unused member initime_ns.
Remove declarations for timeGetTime_ns and prime.
(hires_ms::uptime): Remove.
* posix_ipc.cc (ipc_cond_timedwait): Ditto for timespec_to_filetime.
* fhandler_registry.cc (fhandler_registry::fstat): Add cast.
* resource.cc (fill_rusage): Call NtQueryInformationProcess rather than
GetProcessTimes to deal with LARGE_INTEGER rather than FILETIME.
* times.cc: Simplify time handling. Throughout, use LARGE_INTEGER
rather than FILETIME to simplify computations. Throughout use
{u}int64_t rather than {unsigned} long long. Drop unneeded casts since
NSPERSEC is 64 bit anyway.
(systime_ns): Remove.
(times): Call NtQuerySystemInformation to fetch boot time. Call
NtQueryInformationProcess rather than GetProcessTimes to deal with
LARGE_INTEGER rather than FILETIME. Call GetSystemTimeAsFileTime.
(totimeval): Use constant 1000000 as in other functions.
(time_t_to_filetime): Remove.
(to_time_t): Change return type to time_t.
(time_as_timestruc_t): Rename filetime to systime.
(time): Ditto. Add cast.
(hires_ns::nsecs): Fix return type cast.
(hires_ms::timeGetTime_ns): Remove.
(hires_ns::prime): Remove.
(hires_ms::nsecs): Drop call to prime. Call GetSystemTimeAsFileTime
directly. Subtract FACTOR here since it's the only function needing
to do so.
(minperiod): Cosmetically change to ULONG.
(hires_ns::resolution): Fix return type cast.
(hires_ms::resolution): Simplify, rely on NtQueryTimerResolution.
* winsup.h: Align time related prototypes to above changes.
2013-06-13 Corinna Vinschen <corinna@vinschen.de>
* net.cc (gen_old_if_name): New function to generate short interface
names for old pre-1.7 applications.
(get_ifs): Call gen_old_if_name for said old applications.
2013-06-13 Corinna Vinschen <corinna@vinschen.de>
* posix.sgml (fcntl, flock, lockf): Point to implementation notes.
2013-06-12 Fedin Pavel <p.fedin@samsung.com>
* path.cc (normalize_posix_path): Fix long-standing problem which
allows to access files via ".." using an invalid POSIX path.
2013-06-11 Corinna Vinschen <corinna@vinschen.de>
* winver.rc (FileDescription): Remove (R).
2013-06-10 Corinna Vinschen <corinna@vinschen.de>
* sec_auth.cc (get_user_groups): Don't handle ERROR_ACCESS_DENIED as
error. Explain why.
2013-06-08 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (try_to_debug): Don't use yield() when waiting for
another process.
(sigpacket::setup_handler): Fix long-standing problem where loop could
exit with lock held.
2013-06-08 Christopher Faylor <me.cygwin2013@cgf.cx>
* miscfuncs.cc (yield): Revert (after researching) to calling Sleep
with 0. We don't want to actually sleep when calling this function.
2013-06-08 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygwait.cc (cygwait): Remove lock around sig retrieval since this
code is essentially guarded by thread-specific signal_arrived.
* exceptions.cc (_cygtls::handle_SIGCONT): Simplify. Eliminate
lock/unlock since code is guarded by signal_arrived.
2013-06-07 Corinna Vinschen <corinna@vinschen.de>
* winver.rc (LegalCopyright): Belatedly bump to 2013.
2013-06-07 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (_cygtls::handle_SIGCONT): Reinstate previous behavior
but make sure that yield() isn't called when signal stack is locked.
2013-06-07 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (exception::handle): Add comment explaining si_addr
behavior.
2013-06-07 Christopher Faylor <me.cygwin2013@cgf.cx>
* DevNotes: Add entry cgf-000023.
* sigproc.cc (exit_thread): Remove now-unneeded sleep code.
2013-06-07 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 21.
2013-06-07 Corinna Vinschen <corinna@vinschen.de>
* posix.sgml (std-notes): Fix typo.
2013-06-07 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::pread): Skip to non-atomic
code if mandatory locking is used on this descriptor. Explain why.
(fhandler_disk_file::pwrite): Ditto.
* posix.sgml (std-notes): Extend description of file locking.
2013-06-06 Corinna Vinschen <corinna@vinschen.de>
* exceptions.cc (_cygtls::handle_SIGCONT): Simplify loop waiting for
sig_handle_tty_stop to wake up. Make sure to unlock before calling
yield to avoid starvation of sig_handle_tty_stop. Add comments.
* miscfuncs.cc (yield): Explain why yield should never be called under
_cygtls::lock conditions. Call SleepEx with 1ms timeout. Explain why.
2013-06-05 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 20.
2013-06-04 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::lock): Move to flock.cc.
(fhandler_base::fixup_after_exec): Reset mandatory_locking.
* fhandler.h (class fhandler_base): Add mandatory_locking status flag.
Add mandatory_locking accessor methods. Accommodate change throughout.
(fhandler_base::mand_lock): Declare.
(class fhandler_disk_file): Drop in favor of new status flag.
* (fhandler_disk_file::fcntl): Call need_fork_fixup if mandatory_locking
flag gets set.
* flock.cc (fhandler_base::lock): Define here.
(flock): Handle mandatory_locking.
(lockf): Ditto.
(fhandler_base::mand_lock): Define.
2013-06-03 Corinna Vinschen <corinna@vinschen.de>
* sigproc.cc (exit_thread): Allow to exit the thread while running
global dtors. Explain why.
2013-06-02 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (CancelSynchronousIo): Define.
* fcntl.cc (fcntl64): Drop handling of locking commands.
* fhandler.h (class fhandler_disk_file): Add mandatory_locking.
(fhandler_disk_file::fcntl): Declare.
(fhandler_disk_file::mand_lock): Declare.
* fhandler_disk_file.cc (fhandler_disk_file::fhandler_disk_file):
Initialize mandatory_locking.
(fhandler_disk_file::fcntl): New method. Handle F_LCK_MANDATORY and
locking commands.
(fhandler_disk_file::dup): Duplicate mandatory_locking. Fix a bug
when duplicating prw_handle failed.
(fhandler_disk_file::fixup_after_fork): Reset mandatory_locking.
* flock.cc (fhandler_disk_file::lock): Add comment.
(struct lock_parms): New struct to pass parameters to blocking_lock_thr
thread function.
(blocking_lock_thr): New thread function.
(fhandler_disk_file::mand_lock): New methof implementing mandatory
locking with Windows semantics.
* ntdll.h (NtLockFile): Declare.
(NtUnlockFile): Declare.
* include/fcntl.h: Fix a comment.
(F_LCK_MANDATORY): Define. Add lengthy comment to explain.
2013-06-02 Corinna Vinschen <corinna@vinschen.de>
* exceptions.cc (exception::handle): Resurrect accidentally lost
patch from 2009-07-22: Set si_addr according to POSIX for SIGSEGV.
2013-05-31 Corinna Vinschen <corinna@vinschen.de>
* include/sys/socket.h: Move SHUT_xx definitions from here...
* include/cygwin/socket.h: ...to here.
2013-05-31 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/if.h: Include cygwin/socket.h rather than sys/socket.h
to avoid circular dependency resulting in bogus compile time warnings.
2013-05-28 Corinna Vinschen <corinna@vinschen.de>
* fhandler_procsys.cc (fhandler_procsys::read): Just call
fhandler_base::raw_read from here. Drop comment.
(fhandler_procsys::write): Drop comment.
2013-05-27 Corinna Vinschen <corinna@vinschen.de>
* dll_init.cc (dll_list::topsort): Fix early-return condition to
accommodate process with all runtime loaded DLLs already dlclosed
at fork time.
* gendef (_sigfe_maybe): Fix code handling early return if we don't
have a tls, broken on 2013-05-21.
2013-05-24 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (DEFS): Unused, remove.
(COMPILE.cc): Move -mno-use-libstdc-wrappers flag from here...
($(TEST_DLL_NAME)): ...to here since it's a link time flag.
2013-05-24 Corinna Vinschen <corinna@vinschen.de>
* pinfo.cc (pinfo::status_exit): Enhance comment.
2013-05-24 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (win_env::add_cache): Set the Windows environment variable
using wide chars to make sure native chars don't get scrambled.
* environ.h (build_env): Fix formatting in declaration.
* pinfo.cc (pinfo::status_exit): Handle STATUS_NO_MEMORY. Explain why.
2013-05-24 Corinna Vinschen <corinna@vinschen.de>
* fork.cc (frok::parent): Always set CREATE_UNICODE_ENVIRONMENT flag.
Explain why.
2013-05-23 Corinna Vinschen <corinna@vinschen.de>
* fork.cc (frok::parent): Call CreateProcessW with command line set
to the parent command line. Change comment to explain why.
2013-05-23 Corinna Vinschen <corinna@vinschen.de>
* dcrt0.cc (child_info_fork::alloc_stack_hard_way): Fix datatype of
stacksize to SIZE_T. Cast to SIZE_T in pointer arithmetic. Slightly
enhance output in case of a fatal error.
* fork.cc (frok::parent): Always set ch.stackaddr to DeallocationStack
value of current thread to help stack reservation in
child_info_fork::alloc_stack_hard_way along. Simplify subsequent code
storing stack values in ch. Print guardsize in hex, too.
2013-05-23 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (set_winsymlinks): Handle "winsymlinks:nativestrict"
option. On pre-Vista warn the user if the "winsymlinks:native*" option
is set.
* globals.cc (enum winsym_t): Add WSYM_nativestrict.
* path.cc (symlink_native): Don't create native symlink if target
does not exist. Explain why. Improve comments.
(symlink_worker): Change AFS symlink handling to WSYM_nativestrict.
Handle WSYM_nativestrict throughout. Change condition for bail out
to wsym_type == WSYM_nativestrict. Add comment. Fix formatting.
* shared_info.h (CURR_USER_MAGIC): Change to reflect change in
class user_info.
(class user_info): Add member warned_nonativesyms.
2013-05-22 Corinna Vinschen <corinna@vinschen.de>
* spinlock.h (ULONG): Replace LONG operator with ULONG to accommodate
the fact that CURR_SHARED_MAGIC and USER_SHARED_MAGIC are unsigned
values.
* shared.cc (shared_info::initialize): Drop explicit cast here.
2013-05-21 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (DLL_OFILES): Add arc4random.o.
* common.din: Export arc4random, arc4random_addrandom, arc4random_buf,
arc4random_stir and arc4random_uniform.
* mktemp.cc (arc4random): Remove static replacement function.
* posix.sgml (std-bsd): Add arc4random functions.
* include/cygwin/stdlib.h: Declare arc4random functions.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
* libc/arc4random.cc: New file implementing arc4random functions taken
from FreeBSD.
2013-05-21 Corinna Vinschen <corinna@vinschen.de>
* globals.cc (__isthreaded): New global variable. Explain what it's
used for.
* miscfuncs.cc (thread_wrapper): Set __isthreaded to 1 here.
2013-05-21 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_dev_random): Change type of pseudo to
uint32_t to make sure it's 32 bit on all supported platforms.
2013-05-21 Corinna Vinschen <corinna@vinschen.de>
x86_64 only:
* gendef (_sigfe_maybe): Drop pushing %r12, use %r10 instead since we
don't call yield anymore.
(_sigfe): Ditto.
(_sigbe): Ditto.
2013-05-21 Corinna Vinschen <corinna@vinschen.de>
* libc/base64.c: New file.
* Makefile.in (DLL_OFILES): Add base64.o.
* common.din: Export __b64_ntop and __b64_pton.
* posix.sgml (std-bsd): Add __b64_ntop and __b64_pton.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
2013-05-21 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (open): Only return ENOTDIR if file exists.
2013-05-16 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (sig_hold): Delete.
(sigheld): Delete.
(sig_send): Eliminate special-case __SIGHOLD handling.
(wait_sig): Just flag when signals are on hold and add them to the
queue rather than stalling the wait_sig loop. Clear the flag when
__SIGNOHOLD is specified.
2013-05-14 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (devices_CFLAGS): Drop -Os.
2013-05-14 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (localtime_CFLAGS): Define as -fwrapv since localtime
code requires int overflows to be fully defined.
* localtime.cc: Align a bit more to upstream code.
2013-05-14 Corinna Vinschen <corinna@vinschen.de>
* grp.cc (get_groups): Convert to void function.
(initgroups32): Accommodate the aforementioned change.
(getgrouplist): Ditto.
2013-05-14 Corinna Vinschen <corinna@vinschen.de>
* grp.cc (get_groups): Never return error. Always create a group list,
even if it's empty.
2013-05-13 Christopher Faylor <me.cygwin2013@cgf.cx>
* include/cygwin/version.h: Bump api minor number to reflect previous
change.
2013-05-13 Christopher Faylor <me.cygwin2013@cgf.cx>
* i686.din: Remove _strtold.
* x86_64.din: Move strtold definition...
* common.din: ...to here.
2013-05-07 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler_tty.cc (fhandler_pty_common::__acquire_output_mutex): Never
wait an INFINITE amount of time. Instead default to 1/10 second.
(fhandler_pty_slave::open): Just default to INFINITE wait rather than
(now) waiting longer than other similar calls.
2013-05-03 Christopher Faylor <me.cygwin2013@cgf.cx>
* spawn.cc (ILLEGAL_SIG_FUNC_PTR): New define.
(system_call_handle): Rename from system_call_cleanup.
(is_system_call): New convenience method.
(system_call_handle::system_call_handle): Use ILLEGAL_SIG_FUNC_PTR
rather than cast. Call sig_send here rather than in caller.
Initialize oldint.
(system_call_handle::arm): New function pulled from constructor.
(~system_call_handle::system_call_handle): Use is_system_call().
(child_info_spawn::worker): Use system_call_handle to set up for system
call early. Use arm call prior to waiting for child to properly set up
signal handling. Move comment closer to code it is commenting on.
2013-05-01 Christopher Faylor <me.cygwin2013@cgf.cx>
* resource.cc (setrlimit): Use consistent commenting style. Return
EINVAL when rlim_cur > rlim_max.
2013-04-30 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
Throughout, (mainly in fhandler*) fix remaining gcc 4.7 mismatch
warnings between regparm definitions and declarations.
* smallprint.cc (__small_vswprintf): Conditionalize declaration and
setting of l_opt for only x86_64.
* spawn.cc (child_info_spawn::worker): Remove unused 'pid' variable.
* thread.cc (verifyable_object_isvalid): Temporarily define as
non-inline with gcc 4.7+, regardless of target.
2013-04-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* gendef: Fix sigfe.s typo.
2013-04-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* spawn.cc (system_call_cleanup): Rename from pthread_cleanup. Extend
functionality.
(system_call_cleanup::system_call_cleanup): Set up signals like
system() requires. Unblock previously-blocked signal handling.
(system_call_cleanup::~system_call_cleanup): Restore signal handling
after system().
(child_info_spawn::worker): Put signals on hold and use
system_call_cleanup class to set and restore signals rather than doing
it prior to to running the program. Remove the ill-conceived
pthread_cleanup stuff.
2013-04-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (cygwin_exception::dumpstack): Guard against wild
pointer dereference.
(CYG_EXC_CONTINUE_EXECUTION): Define based on standard Windows
definition.
(CYG_EXC_CONTINUE_SEARCH): Ditto.
(exception::handle): Move andreas detection earlier. Make comment
clearer.
(signal_exit): Set core-dumped flag.
2013-04-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* i686.din: New file.
* x86_64.din: New file.
* common.din: New file.
* cygwin.din: Delete.
* cygwin64.din: Delete.
* gendef: Rework to take options rather than using positional
parameters. Accept multiple files as input.
* Makefile.in: Rework to allow multiple .din files as input to gendef.
* configure.in: Change names of .din files to be expressively target
specific.
* aclocal.m4: Regenerate.
* configure: Ditto.
2013-04-29 Christopher Faylor <me.cygwin2013@cgf.cx>
* autoload.cc (CreateSymbolicLinkW): Rename from CreateSymbolicLink.
2013-04-26 Corinna Vinschen <corinna@vinschen.de>
* fcntl.cc (fcntl): Define as export alias for fcntl64 on x86_64.
2013-04-24 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (CreateSymbolicLink): Define.
* environ.cc (set_winsymlinks): Set allow_winsymlinks.
(parse_thing): Change "winsymlinks" to set by function.
* globals.cc (enum winsym_t): Define.
(allow_winsymlinks): Define as winsym_t.
(ro_u_afs): New R/O Unicode string.
* mount.cc (fs_info::update): Fix comment. Handle AFS.
(fs_names): Add "afs".
* mount.h (enum fs_info_type): Add afs.
(class fs_info): Implement afs.
* path.cc (symlink): Drop third parameter in call to symlink_worker.
(symlink_nfs): New function.
(symlink_native): New function.
(symlink_worker): Drop third argument. Handle native symlink type by
calling symlink_native. Move code to handle NFS to symlink_nfs. Fix
formatting. Slightly restructure code.
* path.h (class path_conv): Add fs_is_afs method.
(symlink_worker): Declare here.
* security.h: Define privilege constants as unsigned int instead of as
unsigned long.
* syscalls.cc (mknod_worker): Set third parameter in symlink_worker
call to WSYM_lnk.
* winsup.h (symlink_worker): Drop declaration here.
2013-04-23 Corinna Vinschen <corinna@vinschen.de>
* cygwin64.din (_setjmp): Export.
(_longjmp): Export.
2013-04-23 Corinna Vinschen <corinna@vinschen.de>
* Merge in cygwin-64bit-branch. See ChangeLog.64bit for details.
2013-04-22 Corinna Vinschen <corinna@vinschen.de>
* include/sys/queue.h: Delete in favor of more complete newlib file.
2013-04-22 Corinna Vinschen <corinna@vinschen.de>
Adapt to changes in newlib's sys/cdefs.h:
* include/sys/sysinfo.h (struct sysinfo): Rename __unused member to __f.
* libc/fts.c (__FBSDID): Drop definition.
* regex/regexec.c (__unused): Drop definition.
2013-04-22 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 19.
2013-04-16 Corinna Vinschen <corinna@vinschen.de>
* glob.cc: Include winsup.h before anything else.
2013-04-12 Corinna Vinschen <corinna@vinschen.de>
* path.cc (symlink_info::check): Drop PC_KEEP_HANDLE flag for
unrecognized reparse points as well. Reorganize code and comments
handling reparse points for better readability.
2013-04-11 Corinna Vinschen <corinna@vinschen.de>
* hires.h (hires_ns::nsecs): Declare with bool parameter.
* times.cc (hires_ns::nsecs): Take bool parameter. If set to true,
don't use prime value (== return system wide absolute value).
2013-04-08 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygtls.h (_cygtls::reset_signal_arrived): Actually reset the
signal_arrived event.
(_cygtls::handle_SIGCONT): Declare new function.
* cygwait.cc (is_cw_sig_handle): Delete.
(is_cw_sig_cont): New convenience define.
(cygwait): Clear signal if is_cw_sig_cont and we got a SIGCONT.
* cygwait.h (cw_wait_mask): Add cw_sig_cont.
* exceptions.cc (sig_handle_tty_stop): Tighten "incyg" region. Use
cw_sig_cont param for cygwait. Don't zero signal here outside of lock.
(sigpacket::setup_handler): Don't check for in_forkee since we will now
never get here in that state.
(_cygtls::handle_SIGCONT): Define new function.
(sigpacket::process): Call handle_SIGCONT early to deal with SIGCONT.
Nuke continue_now handling. Allow SIGKILL to kill a suspended process.
Delete a couple of now-unneeded labels.
(_cygtls::call_signal_handler): Reorganize setting of incyg within
lock.
* sigproc.cc (pending_signals): Simplify.
(pending_signals::clear): New method.
(_cygtls::remove_wq): Reorganize to always close wq.thread_ev if it
exists to avoid handle leaks.
(sig_clear): Simplify by just calling sigq.clear().
(sig_dispatch_pending): Always call sigq.pending even in signal thread
to force another loop in wait_sig.
(sig_send): Remove a "goto out" just before out: label.
(pending_signals::add): Simplify.
(pending_signals::del): Delete.
(pending_signals::next): Delete.
(wait_sig): Define variable q to be the start of the signal queue.
Just iterate through sigq queue, deleting processed or zeroed signals.
Only set clearwait when the current signal is SIGCHLD.
* sigproc.h: Add a comment about an unused enum.
2013-04-08 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (get_inet_addr): Handle abstract AF_LOCAL socket.
(fhandler_socket::recv_internal): Create abstract socket name for
AF_LOCAL datagram sockets. Explain why we do that.
2013-04-07 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygheap.cc (init_cygheap::find_tls): Add a comment.
* dcrt0.cc (parent_sigmask): Delete.
(dll_crt0_1): Use spawn_info->moreinfo->sigmask rather than saved
parent signal mask.
* thread.cc (pthread::thread_init_wrapper): Add comment stressing the
importance of maintaining ordering of statements.
2013-04-05 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (is_mmapped_region): Call LIST_UNLOCK on premature return.
2013-04-03 Corinna Vinschen <corinna@vinschen.de>
* fhandler_proc.cc (format_proc_loadavg): Raise too small buffer size
to avoid overwriting unrelated cygheap memory.
2013-04-03 Corinna Vinschen <corinna@vinschen.de>
* path.cc (class suffix_scan): Add member namelen.
(suffix_scan::name_len): New method.
(suffix_scan::has): Store namelen since we have it already anyway.
Add a bit of explanation and a FIXME to comment.
(suffix_scan::next): Never attach extra .lnk suffix if resulting
filename length exceeds NAME_LEN.
(symlink_info::check): Bail out immediately with ENAMETOOLONG if
filename length exceeds NAME_LEN.
2013-03-31 Christopher Faylor <me.cygwin2013@cgf.cx>
* child_info.h (cygheap_exec_info::sigmask): Declare new field.
* cygheap.cc (init_cygheap::find_tls): Rename threadlist_ix -> ix.
Only take one pass through thread list, looking for eligible threads to
signal. Set a new param indicating that function has found a sigwait*
mask.
* cygheap.h (init_cygheap::find_tls): Reflect new parameter.
* dcrt0.cc (parent_sigmask): New variable.
(child_info_spawn::handle_spawn): Save parent's signal mask here.
(dll_crt0_1): Restore parent's signal mask to tls sigmask as
appropriate. Call sig_dispatch_pending to flush signal queue when we
can finally do something with signals.
* exceptions.cc (sigpacket::process): Avoid attempting to handle
signals if we haven't finished initializing. Rely on the fact that
find_tls will do mask checking and don't do it again. Delete ill-named
'dummy' variable.
* sigproc.cc (cygheap_exec_info::alloc): Save calling thread's signal
mask in new sigmask field.
(wait_sig): Try to debug when WFSO fails and DEBUGGING is defined.
* thread.cc (pthread::set_tls_self_pointer): Make this a true automatic
method rather than inexplicably relying on a thread parameter.
(pthread::thread_init_wrapper): Accommodate set_tls_self_pointer change
to non-static. Initialize sigmask before setting tid or suffer signal
races.
* thread.h (pthread::set_tls_self_pointer): Make non-static, delete
parameter.
2013-03-29 Corinna Vinschen <corinna@vinschen.de>
* cygthread.cc (cygthread::terminate_thread): Only try to free
thread stack on systems not freeing it by themselves.
* wincap.h (wincaps::terminate_thread_frees_stack): New element.
* wincap.cc: Implement above element throughout.
2013-03-29 Christopher Faylor <me.cygwin2013@cgf.cx>
* pinfo.h (pinfo::status_exit): Rename from former static function in
pinfo.cc.
(pinfo::operator == (char *)): Remove unused operator.
* pinfo.cc (pinfo::status_exit): Move this function info pinfo class.
Use progname from the pinfo rather than myself. Be defensive when
inspecting procinfo.
2013-03-29 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (wait_sig): Avoid uninitialized use of nb when retrying.
Consolidate two error messages into one.
2013-03-28 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (pending_signals::retry): Declare new element.
(pending_signals::pending): Force an additional loop through wait_sig
by setting retry whenever this function is called.
(wait_sig): Reorganize to wait for SIGHOLD at bottom. Always add
signal to pending queue and work on whole queue rather than just the
one signal. Loop when sigq.retry is set. Fix long-broken check for
SIGCHLD after queued signals.
2013-03-28 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (exception::handle): Generalize comment.
2013-03-09 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygtls.h (_cygtls::signal_debugger): Change argument type.
(_cygtls::copy_context): Delete declaration.
* exceptions.cc (exception::handle): Don't call copy_context() here.
Move signal_handler call earlier and always call it.
(_cygtls::copy_context): Delete definition.
(_cygtls::signal_debugger): Move copy_context logic here. Suspend
thread receiving signal before gathering context information.
2013-03-08 Christopher Faylor <me.cygwin2013@cgf.cx>
* spawn.cc (child_info_spawn::worker): Save and restore my_wr_proc_pipe
around non-execing operations to avoid handle leak seen in
http://cygwin.com/ml/cygwin/2013-03/msg00152.html .
2013-03-07 Corinna Vinschen <corinna@vinschen.de>
* include/sys/un.h (UNIX_PATH_MAX): Rename from UNIX_PATH_LEN to
follow Linux.
* fhandler_socket.cc: Change UNIX_PATH_LEN to UNIX_PATH_MAX throughout.
(fhandler_socket::recv_internal): Don't return prematurely in case of
successful return. For AF_LOCAL sockets, overwrite returned AF_INET
name with AF_LOCAL name.
2013-03-07 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::bind): Fix check for AF_LOCAL
filename length to allow non-NUL terminated strings within namelen
bytes. Copy over sun_path to local array sun_path to have a
NUL-terminated string for subsequent function calls. Move path_conv
check before OS bind call to not bind the socket before being sure
the file doesn't exist. Add and fix comments.
2013-03-06 Corinna Vinschen <corinna@vinschen.de>
* mount.cc (fs_names): Add trailing NULL element to avoid potential
SEGV in format_proc_filesystems.
2013-03-01 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (exception::handle): Eliminate buggy recursed variable;
just check if we're exiting.
2013-02-26 Corinna Vinschen <corinna@vinschen.de>
* include/pthread.h (pthread_atfork): Add missing declaration.
2013-02-20 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
* include/error.h (error_message_count): Declare as dllimport.
(error_one_per_line): Ditto.
(error_print_progname): Ditto.
2013-02-08 Corinna Vinschen <corinna@vinschen.de>
* child_info.h (CURR_CHILD_INFO_MAGIC): Update.
(class child_info_fork): Drop extraneous semicolon.
2013-02-04 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::bind): Fix error code for
empty filename.
2013-02-04 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::bind): Fix length check of
AF_LOCAL filename so it never accesses memory beyond namelen. Also
make sure filename is NUL-terminated.
2013-01-31 Christopher Faylor <me.cygwin2013@cgf.cx>
* DevNotes: Add entry cgf-000022.
* cygtls.h (_cygtls::func): Define as a sa_sigaction style function.
* exceptions.cc (sig_handle_tty_stop): Ditto.
(_cygtls::interrupt_setup): Fix coercion to accommodate 'func' change.
(ctrl_c_handler): Use tty kill_pgrp to send a signal.
(sigpacket::process): Don't process sigflush here.
(_cygtls::call_signal_handler): Reorganize to avoid a race. Always
call sa_sigaction style function.
* fhandler_termios.cc (is_flush_sig): Define new function.
(tty_min::kill_pgrp): Handle tty flush when signal detected.
(fhandler_termios::bg_check): Be slightly more paranoid about checking
for valid tty.
(fhandler_termios::sigflush): Don't flush unless tty owner.
* fhandler_tty.cc (fhandler_pty_slave::ioctl): Use tty kill_pgrp to
send signal.
(fhandler_pty_master::ioctl): Ditto.
* signal.cc (killsys): Delete definition.
* sigproc.h (killsys): Delete declaration.
* include/cygwin/signal.h (siginfo_t): Simplify union/struct nesting
slightly. Implement mechanism to allow cygwin data passing.
2013-01-23 Christopher Faylor <me.cygwin2013@cgf.cx>
* miscfuncs.cc (__import_address): Check if malloc field points
directly at 'malloc'.
2013-01-23 Christopher Faylor <me.cygwin2013@cgf.cx>
* miscfuncs.cc (__import_address): On second thought, the chance that
this pointer could be NULL is very low so don't bother checking for it.
2013-01-23 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (exception::handle): Make attempt to recursively dump
stack fatal.
2013-01-22 Christopher Faylor <me.cygwin2013@cgf.cx>
* miscfuncs.cc (__import_address): Avoid NULL explicitly.
2013-01-22 Christopher Faylor <me.cygwin2013@cgf.cx>
* miscfuncs.cc (__import_address): Avoid treating random instructions
as import jump.
* malloc_wrapper.cc (malloc_init): Remove comment about 64-bit.
2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx>
* dcrt0.cc (dll_crt0_1): Comment assumption.
* exceptions.cc (sigpacket::setup_handler): Avoid sending signals
during fork processing.
2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx>
* dcrt0.cc (dll_crt0_1): Flag that we are working "incyg". Handle any
signals (presumably exiting signals) which may have come in while we
are in the process of setting up.
2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx>
* update-copyright: Recognize configure.ac scripts too.
2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygerrno.h (__reg3): Define.
* cygmalloc.h (__reg3): Ditto.
2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygerrno.h: Conditionally define __regN for cygserver.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* malloc_wrapper.cc (malloc_init): Re-add inadvertently dropped comment
which explains what's going on with the use_internal calculation.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
Throughout, update copyrights to reflect dates which correspond to
main-branch checkins. Regularize copyright format.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
Throughout, change __attribute__ ((regparm (N))) to just __regN.
Throughout, (mainly in fhandler*) start fixing gcc 4.7.2 mismatch
between regparm definitions and declarations.
* gendef: Define some functions to take @ declaration to accommodate
_regN defines which use __stdcall.
* gentls_offsets: Define __regN macros as empty.
* autoload.cc (wsock_init): Remove unneeded regparm attribute.
* winsup.h (__reg1): Define.
(__reg2): Define.
(__reg3): Define.
* advapi32.cc (DuplicateTokenEx): Coerce some initializers to avoid
warnings from gcc 4.7.2.
* exceptions.cc (status_info): Declare struct to use NTSTATUS.
(cygwin_exception::dump_exception): Coerce e->ExceptionCode to
NTSTATUS.
* fhandler_clipboard.cc (cygnativeformat): Redefine as UINT to avoid
gcc 4.7.2 warnings.
(fhandler_dev_clipboard::read): Ditto.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* update-copyright (update_maybe): Accommodate perl-style copyright
comments.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* update-copyright: Silently skip nonexistent files. Display filename
on update. Don't update non-Red Hat copyrights.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* update-copyright: Update standard copyright information based on cvs
log and current sandbox status.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* malloc_wrapper.cc: Change 'use_internal_malloc' to 'use_internal'
throughout.
(export_malloc_called): Delete.
(internal_malloc_determined): New variable.
(malloc_init): Control calculation of internal/external malloc based on
'internal_malloc_determined'. Use import_address() to determine if
malloc in user_data is ours or not.
* miscfuncs.cc (thread_wrapper): Make static.
(__import_address): Define new function.
* miscfuncs.h (import_address): New define.
(__import_address): Declare new function.
2013-01-20 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (sig_dispatch_pending): Add correct regparm attributes to
match declaration.
(pid_exists): Ditto.
(proc_subproc): Ditto.
(sig_clear): Ditto.
(sig_send): Ditto.
(checkstate): Ditto.
2013-01-19 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Remove ill-conceived NFS workaround from
2013-01-10 for self-inflicted NFS server problem.
2013-01-19 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (ctrl_c_handler): Remove special-case handler for
"cygwin_finished_initializing".
* sigproc.cc (exit_thread): Undefine ExitThread earlier to avoid
recursion on error return.
2013-01-18 Corinna Vinschen <corinna@vinschen.de>
* errno.cc (errmap): Map ERROR_LOCK_VIOLATION to EBUSY.
2013-01-18 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (handler_disk_file::msync): Add call to FlushFileBuffers
to implement MS_SYNC.
2013-01-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* mmap.cc (handler_disk_file::msync): Retry up to 99 times if
FlushViewOFile fails with ERROR_LOCK_VIOLATION.
2013-01-16 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (no_signals_available): Finally remove this macro
entirely.
(exit_thread): Ensure process lock is released on error exit.
(sig_send): Simplify "its_me" test. Remove no_signals_available tests.
2013-01-16 Christopher Faylor <me.cygwin2013@cgf.cx>
* pthread.cc (pthread_exit): Add kludge to accommodate noreturn attribute.
2013-01-14 Antti Kantee <pooka@iki.fi>
* include/pthread.h (pthread_exit): Mark as "noreturn".
2013-01-14 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (signal_exit): Move captive process termination...
(_cygtls::interrupt_setup): ...into here.
(sigpacket::process): Simplify setting of handler when have_execed.
(_cygtls::interrupt_setup): Don't call proc_subproc when we've execed.
* globals.cc (exit_states): Delete unneeded ES_EXEC_EXIT.
* pinfo.cc (pinfo::exit): Change debugging output. Call proc_terminate
rather than the now-obsolete sigproc_terminate. Don't set exit_state
to ES_EXEC_EXIT. Set exit_state to ES_FINAL later.
* sigproc.cc (sigproc_terminate): Delete function.
(wait_sig): Don't call proc_subproc if have_execed.
* sigproc.h (sigproc_terminate): Delete declaration.
* sync.h (lock_process::lock_process): Don't set exit_state to
ES_PROCESS_LOCKED.
(lock_process::operator LONG): Define.
2013-01-11 Christopher Faylor <me.cygwin2013@cgf.cx>
* DevNotes: Add entry cgf-000021.
* select.cc (select): Unconditionally return when a signal is detected.
(select_stuff::wait): Ditto.
2013-01-11 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Drop handling paths > 32757 chars, emit EINVAL
instead, thus simplifying code allocating and filling pfri. Drop size
and use constant expression in NtSetInformationFile call. Add comments.
Drop redundant test for fs_serial_number and change comment accordingly.
2013-01-11 Thomas Wolff <towo@towo.net>
* fhandler.h (class dev_console): Flag for expanded control sequence.
* fhandler_console.cc (char_command): Supporting cursor style modes.
2013-01-10 Corinna Vinschen <corinna@vinschen.de>
* path.h (path_conv::fs_type): New method.
* syscalls.cc (rename): Check for cross-device situation before
touching anything. Explain why. Workaround NFS bug in call to
NtSetInformationFile(FileRenameInformation).
2013-01-09 Corinna Vinschen <corinna@vinschen.de>
* cygerrno.h: Fix copyright.
* exceptions.cc: Drop comment explaining removed variable.
2013-01-09 Corinna Vinschen <corinna@vinschen.de>
* dcrt0.cc (main_thread_sinit): New inline function. Fix and explain
a stdio initialization issue.
(dll_crt0_1): Call main_thread_sinit rather than __sinit.
2013-01-07 Christopher Faylor <me.cygwin2013@cgf.cx>
* thread.cc (pthread_rwlock::lookup_reader): Remove parameter: always
assume that we're looking for the current thread.
(pthread_rwlock::tryrdlock): Eliminate self variable. Accommodate
change in lookup_reader().
(pthread_rwlock::unlock): Ditto.
(pthread_rwlock::rdlock): Ditto. Move add_reader call after writer
tests to more closely mimic old behavior.
(pthread_rwlock::wrlock): Accommodate change in lookup_reader().
* thread.h ((pthread_rwlock::lookup_reader): Eliminate argument.
2013-01-07 Christopher Faylor <me.cygwin2013@cgf.cx>
* thread.cc (pthread_rwlock::add_reader): Perform new operation here
and return pointer to allocated RWLOCK_READER structure.
(pthread_rwlock::rdlock): Reorganize to reflect new add_reader
functionality.
(pthread_rwlock::tryrdlock): Ditto. Remove unneeded call to
lookup_reader().
* thread.h (pthread_rwlock::RWLOCK_READER::RWLOCK_READER): New
constructor.
(pthread_rwlock::add_reader): Reflect new functionality.
2013-01-03 Christopher Faylor <me.cygwin2013@cgf.cx>
* globals.cc (exit_states): Renumber so that ES_EXIT_STARTING is first,
as intended.
* sigproc.cc (wait_sig): Only stop accepting signals after
exit_state > ES_EXIT_STARTING.
2013-01-03 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (exit_thread): Set thread signal mask so that no signals
are sent to an exiting thread.
2013-01-02 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (no_signals_available): Remove exit_state test since
signals are available in a limited fashion when exiting.
(sig_dispatch_pending): Ditto.
(sig_send): Ditto.
(exit_thread): Rearrange to avoid an unnecessary DuplicateProcess when
exiting.
(wait_sig): Allow special signals when exiting.
2013-01-02 Christopher Faylor <me.cygwin2013@cgf.cx>
* DevNotes: Add entry cgf-000020, relating to previous checkin.
2013-01-02 Christopher Faylor <me.cygwin2013@cgf.cx>
* cygtls.h (_cygtls::signal_exit): Delete from class.
* exception.h (cygwin_exception): New class.
(cygwin_exception::dumpstack): Declare new function.
(cygwin_exception::context): Ditto.
(cygwin_exception::dump_exception): Ditto.
* exceptions.cc (cygwin_exception::dump_exception): Move into
cygwin_exception class. Accommodate new variable names.
(cygwin_exception::dumpstack): Ditto stackdump -> dumpstack.
(exception::handle): Move andreas processing earlier. Defer signal
processing decisions to the signal thread where they belong. Pass
exception information to sig_send via new siginfo_t si_cyg field.
(ctrl_c_handler): Wait for SIGHUP signal to be processed since it could
cause a process exit and we don't want races with thread exit lock.
(signal_exit): Move back here from sigproc.cc. Modify arguments and
remove from sigpacket class. Decide when to dump core based on signal
type.
(sigpacket::process): Handle exiting signals in context of threads
rather than in the signal thread. Signal debugger on non-Windows
signals. Remove setup_signal_exit call.
* sigproc.cc (no_signals_available): Remove argument.
(signal_exit_code): Delete.
(close_my_readsig): Ditto.
(_cygtls::signal_exit): Move to exceptions.cc.
(sigproc_terminate): Don't attempt to terminate signal thread.
(setup_signal_exit): Delete.
(exit_thread): Use new si_cyg entry in siginfo_t.
(sig_send): Just use empty initializer for si. Accommodate change in
no_signals_available argument.
(wait_sig): Remove attempt to "go asynchronous" on process exit.
Delete __SIGEXIT handling. Don't ever exit.
* sigproc.h: Remove __SIGEXIT from signal enum. Renumber.
* include/cygwin/signal.h (siginfo_t): Add si_cyg entry.