2014-03-18 Corinna Vinschen Partially revert patch from 2014-03-04. * exception.h (exception::handler_installed): Declare. (exception::exception): Install vectored exception handler on x86_64. (exception::~exception): Remove for x86_64. * exceptions.cc (exception::handler_installed): Define. 2014-03-17 Christopher Faylor * sigproc.h (no_thread_exit_protect): New class. * sigproc.cc (thread_exit): Use no_thread_exit_protect to determine if we need to coordinate ThreadExit/ExitProcess. * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::stop): Use no_thread_exit_protect to kludge around waiting for waveOutClose as it waits for a thread that never exits. (fhandler_dev_dsp::Audio_in::stop): Ditto for waveInClose. 2014-03-16 Christopher Faylor * fhandler.h (fhandler_dev_dsp::base): New method. (fhandler_dev_dsp::_read): Ditto. (fhandler_dev_dsp::_write): Ditto. (fhandler_dev_dsp::_ioctl): Ditto. (fhandler_dev_dsp::_fixup_after_fork): Ditto. (fhandler_dev_dsp::_fixup_after_exec): Ditto. * fhandler_dsp.cc (fhandler_dev_dsp::read): Call real function via base() pointer. (fhandler_dev_dsp::write): Ditto. (fhandler_dev_dsp::ioctl): Ditto. (fhandler_dev_dsp::fixup_after_fork): Ditto. (fhandler_dev_dsp::fixup_after_exec): Ditto. (fhandler_dev_dsp::_read): Rename by adding an leading underscore. (fhandler_dev_dsp::_write): Ditto. (fhandler_dev_dsp::_ioctl): Ditto. (fhandler_dev_dsp::_fixup_after_fork): Ditto. (fhandler_dev_dsp::_fixup_after_exec): Ditto. 2014-03-12 Corinna Vinschen * include/cygwin/socket.h (IPV6_JOIN_GROUP): Revert. (IPV6_LEAVE_GROUP): Ditto. 2014-03-10 Christopher Faylor * fhandler.h (dev_console::b): Redefine as CONSOLE_SCREEN_BUFFER_INFO for use with older OS. * fhandler_console.cc (dev_console::fillin): Ditto for GetConsoleScreenBufferInfo. 2014-03-10 Christopher Faylor * fhandler_console.cc (dev_console::save_restore): Save entire line of current cursor position. 2014-03-09 Christopher Faylor * fhandler_console.cc (fhandler_console::save_restore): Save only until last written row and, because of this, don't bother trying to restore the screen buffer size. Set cursor position after refilling buffer. (fhandler_console::write): Use absolute paths when saving/restoring cursor position or suffer odd problems after a saved screen is restored. 2014-03-09 Christopher Faylor * fhandler.h (fhandler_console::dwBufferSize): Delete. (fhandler_console::dwCursorPosition): Ditto. (fhandler_console::wAttributes): Ditto. (fhandler_console::b): New field encompassing previously disparate screen buffer info. (fhandler_console::save_bufsize): Rename from savebufsiz (fhandler_console::save_buf): Rename sfrom savebuf. (fhandler_console::save_cursor): New field. (fhandler_console::save_restore): New function. (fhandler_console::con): Rename from dev_state. (fhandler_console::focus_aware): Accommodate name change. * fhandler_console.cc: Use 'b' field of dev_console throughout instead of disparate names. Accommodate dev_state -> con rename. (dev_state:save_restore): New function. Attempt to save the entire screen buffer rather than just the visible part. Clear the buffer when saving, like Linux. (fhandler_console::char_command): Use con.save_restore() for Save/restore screen sequence. 2014-03-09 Christopher Faylor * sigproc.cc (_cygtls::remove_wq): Reset thread_ev inside of lock. Set to NULL when done. 2014-03-09 Christopher Faylor * fhandler_console.cc (fhandler_console::char_command): Properly use calculated value rather than directly using dev_state.args[0]. 2014-03-09 Christopher Faylor * dir.cc (opendir): Propagate any errno from build_fh_name. 2014-03-05 Corinna Vinschen * include/cygwin/config.h (__TM_GMTOFF): Define. (__TM_ZONE): Define. 2014-03-05 Corinna Vinschen * localtime.cc: Define TM_GMTOFF and TM_ZONE based on __TM_GMTOFF and __TM_ZONE being defined. Throughout, write to these struct tm members only if CYGWIN_VERSION_CHECK_FOR_EXTRA_TM_MEMBERS is true. * libc/strptime.cc: Ditto. * include/cygwin/version.h (CYGWIN_VERSION_CHECK_FOR_EXTRA_TM_MEMBERS): Define. (CYGWIN_VERSION_API_MINOR): Bump to 272. 2014-03-04 Corinna Vinschen * exception.h (exception::handler_installed): Remove. (exception::exception): Remove old code. Manually install SEH handler instead. (exception::~exception): For x86_64, define frame end label. * exceptions.cc (exception::handler_installed): Remove. 2014-03-03 Corinna Vinschen * exception.h (exception::exception): Install vectored exception handler rather than vectored continue handler. 2014-02-25 Christopher Faylor * fhandler.h (fhandler_console::scroll_buffer_screen): New function. * fhandler_console.cc (fhandler_console::scroll_buffer_screen): New function. (fhandler_console::char_command): Use scroll_buffer_screen as appropriate. (dev_console::scroll_buffer): Remove if 0'ed block. 2014-02-22 Corinna Vinschen * external.cc (cygwin_internal): Add cases for CW_GETPWSID and CW_GETGRSID. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_SETENT, CW_GETENT, CW_ENDENT, CW_GETNSSSEP, CW_GETPWSID and CW_GETGRSID. 2014-02-22 Christopher Faylor * dev_console::scroll_buffer): Reinstate clipping region. 2014-02-22 Christopher Faylor * fhandler.h (dev_console::is_fullscreen): Delete. (dev_console::scroll_window): Return bool indicating success. (dev_console::scroll_screen): New function. (dev_console::clear_screen): New function. (fhandler_console::clear_screen): Make __reg3. (fhandler_console::cursor_set): Ditto. (fhandler_console::cursor_get): Ditto. (fhandler_console::cursor_rel): Ditto. * fhandler_console.cc (dev_console::scroll_buffer): Adapt from fhandler_console. (fhandler_console::scroll_buffer): Use dev_console function. (dev_console::is_fullscreen): Delete. (dev_console::scroll_window): Return true if we cleared the screen. Shrink/grow buffer first before scrolling to ensure that there is sufficient space after scrolling. (fhandler_console::clear_screen): Make reg3, use dev_console function. (dev_console::clear_screen): New function adapted from fhandler_console. (fhandler_console::cursor_set): Make __reg3. (fhandler_console::cursor_rel): Ditto. (fhandler_console::cursor_get): Ditto. (fhandler_console::write): Fix "reverse index". 2014-02-20 Corinna Vinschen * grp.cc (getgrouplist): Fix previous fix so ret is only set to ngroups if ngroups isn't too small. 2014-02-20 Corinna Vinschen * grp.cc (get_groups): Don't add gid to list if it's ILLEGAL_GID. (getgrouplist): Return number of groups, just like glibc. 2014-02-15 Christopher Faylor * DevNotes: Add entry cgf-000024. * fhandler.h (dev_console::state): Remove trailing underscore. (dev_console::args): Ditto. (dev_console::nargs): Ditto. (dev_console::info): Eliminate subclass. (dev_console::dwEnd): New field. (dev_console::scroll_window): New function. (dev_console::is_fullscreen): Ditto. (dev_console::fillin): Rename from fillin_info. (fhandler_console::scroll_buffer): Rename from scroll_screen. * fhandler_console.cc: Throughout s/dev_state\.info/dev_state/g. Accommodate other name changes. (dev_console::fillin): Accommodate rename. Notice max x/y written to. Forgo memset if GetConsoleScreenBufferInfo fails. (fhandler_console::scroll_buffer): Accommodate rename. Don't treat y coordinate of zero as top of screen. (dev_console::is_fullscreen): New function. (dev_console::scroll_window): Ditto. (fhandler_console::clear_screen): Just scroll the screen when clearing the screen in a state where the screen buffer is bigger than the screen. (fhandler_console::char_command): Try harder to get 'S' and 'T' working in the presence of a screen buffer. Use temporary 'n' variable rather than dev_state.args[0]. Use GNU ?: shortcut method. 2014-02-14 Christopher Faylor * pinfo.cc (winpids::add): Always copy pinfo structure when winpid. Fill out dwProcessId explicitly to handle exec from a windows process. (winpids::enum_processes): Reorganize to iterate over known cygwin pids when !winpid. Simplify logic. Don't do duplicate detection for winpid. 2014-02-11 Christopher Faylor * cygwin.sc.in: More closely emulate default pe/i386 linker script. 2014-02-10 Corinna Vinschen * cygheap.cc (cwcsdup): Change parameter to correct PWCSTR. (cwcsdup1): Ditto. * cygheap_malloc.h: Change declarations accordingly. 2014-02-10 Corinna Vinschen * dcrt0.cc (child_info_spawn::handle_spawn): Call fixup_lockf_after_exec with additional argument to specify if the process has been execed or spawned. * flock.cc (fixup_lockf_after_exec): Take bool parameter to handle exec and spawn differently. In case of spawn, just give up POSIX locks in favor of the still running parent. Add comments to explain. 2014-02-09 Christopher Faylor * environ.cc (strbrk): Properly deal with environment variable sans quote. 2014-02-09 Christopher Faylor * environ.cc (strbrk): New function. (parse_options): Use strbrk to parse CYGWIN environment variable. 2014-02-09 Christopher Faylor * sigproc.cc (sig_send): Don't bother with an error message if we are exiting. 2014-02-06 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::fchown): Fix typo in comment. * mount.cc (mount_info::from_fstab): Use tmp_pathbuf rather than stack for big local buffer. * net.cc (cygwin_gethostname): Call GetComputerNameExA rather than GetComputerNameA if gethostname failed. * shared.cc (user_info::initialize): Fix formatting. * include/sys/file.h: Define flock and accompanying macros if not already defined in sys/_default_fcntl.h. 2014-02-04 Corinna Vinschen * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 29. 2014-01-30 Corinna Vinschen * dir.cc (opendir): Call set_unique_id only with valid fh. 2014-01-30 Christopher Faylor * fhandler.h (cltype): Add cl_buf_beg, cl_buf_end. * fhandler_console.cc (dev_console::console_attrs::set_cl_x): Honor buffer locations. (dev_console::console_attrs::set_cl_y): Ditto. (fhandler_console::write): On reset, use absolute positioning to go to beginning of buffer. Clear entire buffer. 2014-01-27 Christopher Faylor * gendef (_setjmp (x86)): Save FPU control word location in sequential location. Adjust sigstack save accordingly. (_longjmp (x86)): Ditto for restore. 2014-01-27 Corinna Vinschen * gendef (sigdelayed (x86_64)): Save and restore FPU control word. (_sigdelayed (x86)): Ditto. Save and restore XMM registers. Add comment. (_setjmp (x86)): Save FPU control word, following FreeBSD here. (_longjmp (x86)): Restore FPU control word. 2014-01-24 Christopher Faylor * winf.cc (linebuf::fromargv): Treat '=' as a special character. 2014-01-23 Corinna Vinschen * security.h (open_local_policy): Remove declaration. (lsa_open_policy): Declare. (lsa_close_policy): Declare. * sec_auth.cc (lsa_open_policy): Rename from open_local_policy. Take server name as parameter. Return NULL in case of error, rather than INVALID_HANDLE_VALUE. (lsa_close_policy): Rename from close_local_policy. Make externally available. Get handle by value. (create_token): Convert call to open_local_policy/close_local_policy according to aforementioned changes. (lsaauth): Ditto. (lsaprivkeyauth): Ditto. * setlsapwd.cc (setlsapwd): Ditto. 2014-01-22 Corinna Vinschen * path.cc (etc::test_file_change): In case of NtQueryFullAttributesFile returning an error, only return true if file actually exists. 2014-01-20 Corinna Vinschen * include/cygwin/in6.h (struct ipv6_rt_hdr): Define. * include/cygwin/socket.h: Fix formatting. (IP_UNICAST_IF): Define. (IPV6_JOIN_GROUP): Remove Windowism. (IPV6_LEAVE_GROUP): Ditto. (IPV6_UNICAST_IF): Define. (IPV6_TCLASS): Ditto. (IPV6_RECVTCLASS): Ditto. 2014-01-18 Corinna Vinschen * include/netinet/ip6.h: New file, copied from FreeBSD vebatim. 2014-01-17 Christopher Faylor * dtable.h (dtable::lock): Revert static. (dtable::unlock): Ditto. 2014-01-17 Corinna Vinschen * passwd.cc (setpassent): Align to BSD definition. 2014-01-17 Corinna Vinschen * syscalls.cc (popen): Introduce Glibc 'e' flag to allow thread-safe opening of the pipe with O_CLOEXEC flag. Simplify FD_CLOEXEC handling. 2014-01-17 Corinna Vinschen * include/sys/file.h (LOCK_SH): Drop definition in favor of new definitions in newlib. (LOCK_EX): Ditto. (LOCK_NB): Ditto. (LOCK_UN): Ditto. (flock): Ditto. (F_OK): Drop. Already correctly defined in unistd.h. (X_OK): Ditto. (W_OK): Ditto. (R_OK): Ditto. 2014-01-17 Corinna Vinschen * include/cygwin/config.h (_STDIO_BSD_SEMANTICS): Define as 1. 2014-01-16 Christopher Faylor * dtable.h (dtable::lock): Make static. (dtable::unlock): Ditto. 2014-01-08 Christopher Faylor * exception.h (cygwin_exception::open_stackdumpfile): Move old function into class. (cygwin_exception::h): New member. (cygwin_exception::cygwin_exception): Initialize h to NULL. * exceptions.cc (cygwin_exception::open_stackdumpfile): Move into cygwin_exception class. Use 'h' class member. (cygwin_exception::dumpstack): Close stack dump file handle if opened. 2014-01-04 Christopher Faylor * fhandler.h (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: 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.