2010-06-22 Corinna Vinschen * sec_acl.cc (setacl): Use the long time unused ACL_DEFAULT_SIZE instead of a constant value. * security.cc (alloc_sd): Ditto. 2010-06-21 Christopher Faylor * tmpbuf.h: New file. * flock.cc: Include tmpbuf.h for new tmpbuf functionality. (allow_others_to_sync): Use tmpbuf rather than tmp_pathbuf. Explain why. (lf_setlock): For consistency, use tmpbuf rather than tmp_pathbuf. (lf_getlock): Ditto. 2010-06-21 Christopher Faylor * dcrt0.cc (__api_fatal): Temporarily generate a stackdump. 2010-06-21 Christopher Faylor * tls_pbuf.cc (tmp_pathbuf::w_get): Report what's failing when too many buffers are in use. 2010-06-17 Corinna Vinschen * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Fetch stat handle only after checking for NFS. 2010-06-15 Corinna Vinschen * fhandler_disk_file.cc (fhandler_base::fstat_by_nfs_ea): Use handle returned by get_stat_handle. (fhandler_base::fstat_helper): Reinstatiate code to re-open the file when checking for executability if called via fstat. Explain why. 2010-06-15 Corinna Vinschen * dtable.cc (dtable::dup_worker): Reset path_conv handle in duplicated fhandler. * fhandler.cc (fhandler_base::fstatvfs): Keep handle in created path_conv. * fhandler.h (fhandler_base::get_stat_access): New method. (fhandler_base::get_stat_handle): New method. * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Use handle returned by get_stat_handle. Only request inode from system if it isn't already set in the fhandler, and only for filesystems supporting them. (fhandler_base::fstat_fs): Use handle returned by get_stat_handle. Change the way open_fs is called. Explain why. (fhandler_base::fstat_helper): Use handle returned by get_stat_handle. Never use 0 inode number. Simplify executable recognition by re-using get_stat_handle if file could be opened with sufficient rights. (fhandler_disk_file::fstatvfs): Use handle returned by get_stat_handle. (fhandler_disk_file::facl): Use handle returned by get_stat_handle in GETACL and GETACLCNT cases. (fhandler_disk_file::link): Use handle returned by get_stat_handle instead of opening file here again. Add comment. (readdir_get_ino): Keep handle in created path_conv and drop opening file. * ntdll.h (wait_pending): New helper function. * path.cc (symlink_info::check): Drop unused 'opt' parameter from declaration. Add path_conv_handle argument. (path_conv::check): Make sure conv_handle is closed. Keep PC_KEEP_HANDLE flag in pflags_or. Accommodate call to sym.check to new args. (path_conv::~path_conv): Close conv_handle. (symlink_info::check_shortcut): Don't re-open file here, just use incoming handle. Drop goto's and label out. (symlink_info::check_sysfile): Don't re-open file here, just use incoming handle. Keep track of file position to accommodate the fact that file has been opened asynchronously in calling function. (symlink_info::check_nfs_symlink): Don't re-open file here, just use incoming handle. (symlink_info::check): Drop unused 'opt' parameter. Add path_conv_handle argument. Always try to open file with GENERIC_READ rights first to allow reading file content w/o having to re-open the file. Drop back to READ_CONTROL | FILE_READ_ATTRIBUTES otherwise. Call symlink test functions (except for check_reparse_point) only if file could be opened with GENERIC_READ. Keep file handle open if PC_KEEP_HANDLE is set in pflags. * path.h (enum pathconv_arg): Add PC_KEEP_HANDLE flag. (class path_conv_handle): New class. (class path_conv): Add conv_handle member. (path_conv::operator =): Duplicate conv_handle. (path_conv::handle): New method. (path_conv::access): New method. (path_conv::reset_conv_handle): New method. (path_conv::close_conv_handle): New method. 2010-06-15 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::fstatvfs): Fix indentation. 2010-06-15 Corinna Vinschen * fhandler_disk_file.cc (path_conv::get_ino_by_handle): Convert from static function to path_conv method. Accommodate throughout. (path_conv::ndisk_links): Unused, comment out. * path.h (path_conv::get_ino_by_handle): Declare. (path_conv::ndisk_links): Comment out declaration. 2010-06-14 Corinna Vinschen * path.cc (path_conv::check): Return with ENOTDIR if component is a device. 2010-06-14 Corinna Vinschen * dlfcn.cc (get_full_path_of_dll): Revert patch from 2010-04-29. 2010-06-12 Christopher Faylor * times.cc (gtod): Move to sharable region. 2010-06-09 Corinna Vinschen * path.cc (symlink_info::check_shortcut): Use ro_u_empty rather than local UNICODE_STRING object. (symlink_info::check_sysfile): Ditto. Return immediately if NtOpenFile failed to avoid closing random handle. Improve debug output in case NtReadFile failed. 2010-06-08 Corinna Vinschen * path.cc (symlink_info::check): Set h to NULL after closing handle in udf check. Remove overagressive bracketing. Don't set h to NULL without closing the handle. Fix using wrong handle in checking file system when using parent directory handle. 2010-06-07 Corinna Vinschen * include/sys/stdio.h: Remove _GNU_SOURCE guard around getline and getdelim prototypes since they are SUSv4 now. 2010-06-02 Corinna Vinschen * ntdll.h (STATUS_BAD_NETWORK_PATH): Define. (STATUS_BAD_NETWORK_NAME): Define. * path.cc (symlink_info::check): Convert STATUS_BAD_NETWORK_PATH and STATUS_BAD_NETWORK_NAME into an immediate ENOENT. 2010-06-01 Corinna Vinschen * exceptions.cc (open_stackdumpfile): Correctly append .stackdump suffix. * nlsfuncs.cc (rebase_locale_buf): Reorder arguments. Accommodate throughout. Add pointer to end of buffer and avoid changing pointers not pointing into the buffer. 2010-06-01 Corinna Vinschen * fhandler_netdrive.cc (fhandler_netdrive::exists): Always free WNet resource if created. 2010-05-31 Corinna Vinschen * cygheap.cc (cygheap_user::set_name): Allow to change the user name if it only differs by case. 2010-05-26 Corinna Vinschen * fhandler_registry.cc (multi_wcstombs): New function. (fhandler_registry::fstat): Call multi_wcstombs for strings of type REG_MULTI_SZ. (fhandler_registry::fill_filebuf): Ditto. 2010-05-26 Christopher Faylor * hires.h (hires_base::reset): New function. (hires_us): Specify that hires_base is a public import. (hires_ms): Ditto. * times.cc (gtod): Move earlier in file. (settimeofday): Reset gtod so that base will be subsequently recalculated. 2010-05-26 Corinna Vinschen * path.cc (symlink_info::check): Don't try to handle remote reparse points as symlinks. Explain why. 2010-05-26 Corinna Vinschen * include/inttypes.h: Change PTR definitions to int to align with the stdint.h type definitions of intptr_t/uintptr_t. 2010-05-26 Corinna Vinschen * fhandler.h (class fhandler_pty_master): Add master_thread member. * fhandler_tty.cc (fhandler_pty_master::close): Properly detach from master thread. (fhandler_pty_master::setup): Store cygthread pointer of pty master control thread in master_thread. Don't zap thread handle. 2010-05-26 Kazuhiro Fujieda Corinna Vinschen * nlsfuncs.cc (__set_lc_time_from_win): Use LOCALE_SMONTHNAME1 instead of LOCALE_SABBREVMONTHNAME1 in Japanese and Korean locales to get abbreviated month names. Explain why. 2010-05-18 Kazuhiro Fujieda * environ.cc (regopt): Change the first argument to wide char string. (environ_init): Accommodate change to the first argument of regopt. * exception.cc (open_stackdumpfile): Accommodate change to the type of progname in _pinfo. * external.cc (fillout_pinfo): Ditto. * fhandler_process.cc (format_process_winexename): Ditto. (format_process_stat): Ditto. * fork.cc (fork::parent): Ditto. * pinfo.cc (pinfo_basic::pinfo_basic): Call GetModuleFileNameW instead of GetModuleFileName. (pinfo::thisproc): Accommodate change to the type of progname in _pinfo. (pinfo_init): Ditto. * pinfo.h (_pinfo): Change the type of progname to a wide char array. * registry.h (reg_key::get_int): Change the first argument from constant point to pointer to constant. (reg_key::get_string): Ditto. Change the last argument likewise. * registry.cc (reg_key::get_int): Accommodate change to the declaration. (reg_key::get_string): Ditto. * strace.cc (strace::hello): Accommodate change to the type of progname in _pinfo. (strace::vsprntf): Ditto. 2010-05-07 Christopher Faylor * Makefile.in (DLL_OFILES): Add pseudo-reloc.o. * dcrt0.cc (child_info_fork::handle_fork): Call _pei386_runtime_relocator here. (dll_crt0_1): Ditto for non-fork case. * dll_init.cc (dll::init): Complain more in comment. Clean up slightly. (dll_dllcrt0_1): Call _pei386_runtime_relocator when we know we have a filled-in per_process structure. * globals.cc (__cygwin_user_data): Accommodate new fields for _pei386_runtime_relocator. * pseudo-reloc.cc: New file adapted from old lib/pseudo-reloc.c. Include winsup.h directly. Collapse #ifdef __CYGWIN__ into one block. Perform minor whitespace code reformatting. (__report_error): Use small_printf to output error. (_pei386_runtime_relocator): Conditionalize for cygwin to take per_process pointer parameter. * winsup.h (_pei386_runtime_relocator): Declare. * include/cygwin/version.h (CYGWIN_VERSION_PER_PROCESS_API_VERSION_COMBINED): New macro. (CYGWIN_VERSION_USER_API_VERSION_COMBINED): Use above macro. (CYGWIN_VERSION_USE_PSEUDO_RELOC_IN_DLL): New macro. (CYGWIN_VERSION_API_MINOR): Bump to 227. * include/sys/cygwin.h: Remove obsolete comment. (per_process::unused2): Shorten. (per_process::pseudo_reloc_start): New field. (per_process::pseudo_reloc_end): Ditto. (per_process::image_base): Ditto. * lib/_cygwin_crt0_common.cc: Declare pseudo runtime externs needed for per_process structure. (_cygwin_crt0_common): Fill in pseudo_reloc runtime constants. * lib/pseudo-reloc-dummy.c: New file. Dummy function to satisify ld. * lib/pseudo-reloc.c: Delete. 2010-05-07 Corinna Vinschen * fhandler_tty.cc (fhandler_tty_slave::init): Disable grabbing process group ownership of tty in case we're being debugged. 2010-05-06 Corinna Vinschen * path.cc (path_conv::check): Drop setting sym.pflags before calling mount_info::conv_to_win32_path since the flag value is overwritten by mount_info::conv_to_win32_path anyway. Set flags for DOS paths before calling symlink_info::check so they can be used in that function already. 2010-05-03 Christopher Faylor * dll_init.cc (dll_list::alloc): Add debugging assertion. 2010-04-29 Corinna Vinschen * dlfcn.cc (get_full_path_of_dll): Handle non-existent file. 2010-04-29 Corinna Vinschen * mount.cc (struct opt): Add "dos" and "ihash" options. (fillout_mntent): Ditto. * path.cc (path_conv::get_nt_native_path): Use path_conv's has_dos_filenames_only method. (path_conv::check): Add PATH_IHASH flag if FS has unreliable inode numbers. (symlink_info::check_shortcut): Or symlink flags to pflags. (symlink_info::check_sysfile): Ditto. Change test accordingly. (symlink_info::check_reparse_point): Ditto. (symlink_info::check_nfs_symlink): Ditto. (symlink_info::check): Check PATH_DOS flag in call to get_nt_native_path to utilize mount flag. Ditto in test for potential restarting. Set PATH_DOS if FS only allows DOS filename rules. * path.h (enum path_types): Add PATH_DOS and PATH_IHASH. (path_conv::hasgood_inode): Check PATH_IHASH instead of fs.hasgood_inode. (path_conv::has_dos_filenames_only): New method. * include/sys/mount.h (MOUNT_DOS): New mount flag. (MOUNT_IHASH): Ditto. 2010-04-29 Corinna Vinschen * external.cc (cygwin_internal): Add CW_CVT_MNT_OPTS to allow mount flag parsing. Add CW_LST_MNT_OPTS case to allow mount flag listing. * mount.cc (fstab_read_flags): Rename from read_flags. Make externally available. Change input string to char ** to allow returning faulty option. Add flag for avoiding debug output. (fstab_list_flags): New function to create list of options. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_CVT_MNT_OPTS and CW_LST_MNT_OPTS. 2010-04-28 Corinna Vinschen * mount.cc (compare_flags): New function. (read_flags): Replace loop with bsearch. Simplify error check. 2010-04-28 Corinna Vinschen * include/cygwin/version.h: Bump API minor version. 2010-04-28 Corinna Vinschen * cygwin.din (__locale_mb_cur_max): Export. * nlsfuncs.cc (__getlocaleinfo): Drop conversion to multibyte. (__charfromwchar): New function to convert to multibyte. (__eval_datetimefmt): Convert to return wchar_t pointer. Work on wide char string. (__set_lc_time_from_win): Take additional pointer to "C" category info to accommodate C.foo locales. Rework to fill wide char members in category info. (__set_lc_ctype_from_win): New function. (__set_lc_numeric_from_win): Take additional pointer to "C" category info to accommodate C.foo locales. Rework to fill wide char members in category info. (__set_lc_monetary_from_win): Ditto. (__set_lc_messages_from_win): Ditto. (__get_current_collate_codeset): New function, called from nl_langinfo. * include/cygwin/config.h (__HAVE_LOCALE_INFO_EXTENDED__): Define. 2010-04-27 Christopher Faylor * spawn.cc (find_exec): Use the first detected errno when lookup fails. 2010-04-27 Corinna Vinschen * include/regex.h: Include _ansi.h to avoid missing out on preprocessor macros in sys/_types.h. 2010-04-26 Corinna Vinschen * mount.h (fs_info::inited): New inline method. * path.cc (path_conv::check): Clear filesystem info if following a symlink. Use new fs_info::inited method to check if FS info is already available. (symlink_info::check): Drop fs_update_called. Use fs_info::inited method instead. Streamline test for leading space and trailing dot or space. Add comments. 2010-04-23 Corinna Vinschen * path.h (get_nt_native_path): Add third parameter to declaration and declare with regparms. * path.cc (get_nt_native_path): Add third parameter to allow conversion of leading and trailing dots and spaces on filesystems only supporting filenames following DOS rules. (path_conv::get_nt_native_path): Call get_nt_native_path according to fs.has_dos_filenames_only flag. (getfileattr): Accommodate new parameter to get_nt_native_path. (symlink_info::check): Revamp fs_update_called handling to call fs.update only once per call. Call get_nt_native_path according to fs.has_dos_filenames_only flag. Streamline filesystem dependent code not to be called more than once unnecessarily. Drop code tweaking incoming path for broken filesystems only allowing DOS pathnames. Rely on changed get_nt_native_path instead. * mount.cc (fillout_mntent): Accommodate new parameter to get_nt_native_path. * strfuncs.cc (tfx_rev_chars): New conversion table with comment. (sys_cp_wcstombs): Use tfx_rev_chars rather than tfx_chars. 2010-04-22 Corinna Vinschen * path.cc (symlink_info::check): Make sure to restart only once. 2010-04-22 Corinna Vinschen * mount.cc (GETVOLINFO_VALID_MASK): Drop FILE_SEQUENTIAL_WRITE_ONCE from mask. Expand the comment a bit. (WIN_FAT_FLAGS): New define. (FS_IS_WINDOWS_FAT): New macro. (fs_info::update): Handle remote FS faking to be FAT. Subsume under CIFS. Check for NWFS and has_buggy_basic_info only for remote filesystems. Add check for has_dos_filenames_only. * mount.h (class fs_info): Add has_dos_filenames_only status flag. Implement accessors. * path.cc (symlink_info::check): Rearrange variable definitions to clear them up. Add a restart label to allow a clean restart within the method. Add a check for broken filesystems only allowing DOS pathnames in case we encounter a STATUS_OBJECT_NAME_NOT_FOUND status. If all checks point to one of that, restart method with tweaked incoming path. Add lengthy comments to explain what we do. 2010-04-22 Corinna Vinschen * path.cc (symlink_info::check): Fix a comment. 2010-04-21 Corinna Vinschen Christopher Faylor * fhandler_termios.cc (tcinit): Remove previously applied change. Replace with... * fhandler_tty.cc (fhandler_tty_slave::init): Become process group leader if called from dtable::init_std_file_from_handle. Add comment to explain. 2010-04-21 Corinna Vinschen * dtable.cc (dtable::init_std_file_from_handle): Set access mask for the slave side of ttys explicitely. Explain why. 2010-04-20 Christopher Faylor * path.cc (cygwin_create_path): Free memory on error. 2010-04-20 Corinna Vinschen * cygheap.h (struct init_cygheap): Add rlim_core member. * cygheap.cc (cygheap_init): Initialize rlim_core to RLIM_INFINITY. * exceptions.cc (stackdump): Drop extern declaration of rlim_core. Refer to cygheap->rlim_core instead. (exception::handle): Disable stackdumping if cygheap->rlim_core is 0. Don't set WCOREDUMP flag in exit code, if cygheap->rlim_core is 0. (sigpacket::process): Ditto. * resource.cc (rlim_core): Remove. (getrlimit): Fetch RLIMIT_CORE value from cygheap->rlim_core. (setrlimit): Store RLIMIT_CORE value in cygheap->rlim_core. 2010-04-19 Christopher Faylor * cygerrno.h: Nevermind. 2010-04-19 Christopher Faylor * cygerrno.h: Protect use of NTSTATUS for only when we need it. 2010-04-19 Christopher Faylor * lib/_cygwin_crt0_common.cc: Remove unneeded declarations. 2010-04-19 Corinna Vinschen * fhandler_tty.cc (fhandler_tty_slave::fch_set_sd): Remove commented out code. 2010-04-19 Corinna Vinschen * autoload.cc (GetNamedPipeClientProcessId): Define. * fhandler.h (fhandler_tty_slave::fch_open_handles): Declare private. (fhandler_tty_slave::fch_close_handles): Ditto. (fhandler_tty_slave::cygserver_attach_tty): Drop declaration. (fhandler_tty_slave::fstat): Declare public. (fhandler_tty_slave::fchmod): Declare public. (fhandler_tty_slave::fchown): Declare public. (class fhandler_pty_master): Add master_ctl handle. (fhandler_pty_master::pty_master_thread): Declare public. * fhandler_termios.cc (fhandler_termios::tcinit): If the process is started from a non-Cygwin process, make it tty process group leader. * fhandler_tty.cc: Throughout accommodate additional security related arguments in calls to functions creating or opening objects. (close_maybe): Move to start of file to reuse it in other methods. (struct pipe_request): Define. (struct pipe_reply): Define. (fhandler_tty_slave::open): Throughout, try to open synchronization objects with MAXIMUM_ALLOWED permissions. Drop call to cygserver. Try to duplicate pipe handles via master_ctl pipe if duplicating directly doesn't work. (fhandler_tty_slave::cygserver_attach_tty): Remove. (fhandler_tty_slave::init): Close unused incoming pipe handle. (fhandler_pty_master::close): Send exit message to master control thread and close master_ctl handle. (fhandler_pty_master::pty_master_thread): New method, implementing the master control thread. (pty_master_thread): Static helper to start master control thread. (fhandler_pty_master::setup): Simplify creating pipe inheritance. Make sure we're the one creating the input_available_event. Add comment to explain why. Create master_ctl pipe and start master control thread. Close master_ctl handle in case of error. * security.cc (alloc_sd): Add code to handle tty objects. Add comments to explain what exactly is required. (get_object_sd): New function. (get_object_attribute): New function. (create_object_sd_from_attribute): New function. (set_object_sd): New function. (set_object_attribute): New function. (set_file_attribute): Change attribute type to mode_t. * security.h (set_file_attribute): Change attribute type to mode_t. (get_object_sd): Declare. (get_object_attribute): Declare. (create_object_sd_from_attribute): Declare. (set_object_sd): Declare. (set_object_attribute): Declare. * tty.cc (tty::slave_alive): Implement directly instead of via alive. (tty::exists): Open mutex handle with READ_CONTROL access. (tty::alive): Remove. (tty::open_output_mutex): Convert to inline method. (tty::open_input_mutex): Ditto. (tty::open_mutex): Take additional ACCESS_MASK parameter for the mutex open access mask. (tty::open_inuse): New method. (tty::create_inuse): Take PSECURITY_ATTRIBUTES parameter. Drop fmt name parameter. Always create TTY_SLAVE_ALIVE event. (tty::get_event): Take additional PSECURITY_ATTRIBUTES parameter for CreateEvent. * tty.h (class tty): Change declarations according to aforementioned changes. (tty::open_output_mutex): Implement as inline method. (tty::open_input_mutex): Ditto. 2010-04-19 Corinna Vinschen * dtable.cc (dtable::init_std_file_from_handle): Set dev to valid content for ptys. Remove setting FILE_CREATE_PIPE_INSTANCE in access flags since it's not needed. Set the access mask for kernel objects according to what's returned by NtQueryInformationFile, info class FileAccessInformation. 2010-04-19 Corinna Vinschen * syscalls.cc (rename): On STATUS_ACCESS_VIOLATION, retry to open for DELETE until the STATUS_ACCESS_VIOLATION goes away. Add comment to explain why. 2010-04-17 Corinna Vinschen * sec_helper.cc (get_null_sd): Make static. Use PSECURITY_DESCRIPTOR instead of SECURITY_DESCRIPTOR *. (sec_acl): Fix fomratting. * security.h (get_null_sd): Drop declaration. 2010-04-16 Corinna Vinschen * cygerrno.h (seterrno_from_nt_status): Declare. (__seterrno_from_nt_status): Call seterrno_from_nt_status. * errno.cc (seterrno_from_win_error): Set errno without calling set_errno to avoid packing strace output with errno messages. (seterrno_from_nt_status): New function to print NT status as well as resulting Windows error. 2010-04-15 Corinna Vinschen * kernel32.cc (CreateEventW): Create event object with EVENT_ALL_ACCESS access mask. (CreateMutexW): Create mutex object with MUTEX_ALL_ACCESS access mask. (CreateSemaphoreW): Create semaphore object with SEMAPHORE_ALL_ACCESS access mask. 2010-04-15 Corinna Vinschen * sec_helper.cc (set_cygwin_privileges): Enable SE_DEBUG_PRIVILEGE, if available. Add comments. 2010-04-13 Corinna Vinschen * fhandler_socket.cc (get_inet_addr): Only test the file for being a socket after opening it. Retry if opening failed with sharing violation. Explain why we do this. (fhandler_socket::bind): Create file with no sharing allowed. 2010-04-13 John Bowman * cygheap.cc (cwcsdup): Fix allocation size to accommodate sizeof WCHAR. (cwcsdup1): Ditto. 2010-04-12 Corinna Vinschen * include/cygwin/version.h: Bump DLL minor version number to 5. 2010-04-12 Corinna Vinschen * posix.sgml (std-notes): Improve lseek description. 2010-04-12 Corinna Vinschen * fhandler_tty.cc (fhandler_tty_slave::open): Add code to duplicate handles within a single process to simplify openpty case. (fhandler_tty_slave::cygserver_attach_tty): Correctly send Windows PID to cygserver, rather than the Cygwin PID. 2010-04-11 Corinna Vinschen * fhandler.h (class dev_console): Add backspace_keycode member. * fhandler_console.cc (fhandler_console::get_tty_stuff): Initialize backspace_keycode with CERASE. (fhandler_console::read): Return dev_state->backspace_keycode if the backspace key is pressed. (fhandler_console::char_command): Implement DECBKM escape sequence. 2010-04-10 Christopher Faylor * fhandler_console.cc (fhandler_console::read): Default to sending CERASE character if termios VERASE field is zero. (fhandler_console::fixup_after_fork_exec): Avoid a spurious debug message. 2010-04-10 Christopher Faylor * mkvers.sh: Use modern date formats to construct the date. 2010-04-09 Corinna Vinschen * nlsfuncs.cc (__set_lc_time_from_win): Actually set _time_locale->md_order to the D_MD_ORDER value written to the buffer. 2010-04-09 Christopher Faylor * path.cc (path_conv::set_normalized_path): Use crealloc_abort to avoid a memory leak. * path.h (path_conv::operator =): Just use cstrdup to allocate normalized_path, avoiding attempt to free a pointer which is allocated in another pc. 2010-04-07 Corinna Vinschen * include/cygwin/version.h: Bump DLL minor version number to 4. 2010-04-06 Corinna Vinschen * thread.cc (valid_sched_parameters): Declare extern here. (sched_set_thread_priority): Ditto. 2010-04-06 Corinna Vinschen * include/sched.h: Remove, overruled by newlib file. * include/sys/sched.h: Ditto. 2010-04-06 Christopher Faylor * fhandler_fifo.cc (fhandler_fifo::open): Accommodate previous return value change to setup_overlapped. 2010-04-02 Christopher Faylor * fhandler.h (fhandler_base::has_ongoing_io): Declare virtual method. * select.cc (peek_pipe): Reorganize slightly. Don't attempt to check a handle if it has ongoing I/O. (select_pipe_info::select_pipe_info): Delete definition. (select_pipe_info::~select_pipe_info): Delete definition. (thread_pipe): Get rid of WFMO call. Reorganize loop. (pipe_cleanup): Remove dependence on destructor. (thread_serial): Reorganize loop. * select.h (select_pipe_info): Empty this class since it no longer has any special requirements (for now). * syscalls.cc (readv): Remove an unneeded debug printf. 2010-04-02 Christopher Faylor * fhandler.h (fhandler_base::setup_overlapped): Delete virtual declaration. (fhandler_base::destroy_overlapped): Ditto. (fhandler_base_overlapped): Remove now-unneeded friend. (fhandler_base_overlapped::setup_overlapped): Return int, remove parameter. (fhandler_base_overlapped::get_overlapped): Return reference. (fhandler_base_overlapped::fhandler_base_overlapped): Be more assertive about zeroing everything. (fhandler_base_overlapped::fixup_after_fork): Declare new function. (fhandler_base_overlapped::fixup_after_exec): Ditto. (fhandler_base_overlapped::dup): Ditto. (fhandler_base_overlapped::close): Ditto. * fhandler_fifo.cc (fhandler_fifo::dup): Call fhandler_base_overlapped::dup rather than fhandler_base::dup. * pipe.cc (fhandler_pipe::dup): Ditto. (fhandler_pipe::init): Accommodate change in setup_overlapped arguments for "opened_properly" case. 2010-04-02 Christopher Faylor * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Properly initialize overlapped part of this class. 2010-04-02 Corinna Vinschen * fhandler_tty.cc (fhandler_tty_slave::close): Revert previous change. 2010-04-02 Christopher Faylor * select.h (select_pipe_info::add_watch_handle): Delete declaration. * select.cc (select_pipe_info::add_watch_handle): Delete definition. (fhandler_pipe::select_read): Delete call to add_watch_handle. (fhandler_pipe::select_write): Ditto. (fhandler_pipe::select_except): Ditto. 2010-04-02 Christopher Faylor * dtable.cc (dtable::init_std_file_from_handle): Avoid adding fh to fdtab until we know that it is good. * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Handle error conditions more consistently. Avoid handle leakage on error. 2010-04-02 Corinna Vinschen * fhandler_tty.cc (fhandler_tty_slave::close): Avoid potential crash if former open call has been unsuccessful. 2010-04-01 Corinna Vinschen * nlsfuncs.cc: Fix indentation. 2010-04-01 Corinna Vinschen * nlsfuncs.cc (rebase_locale_buf): New helper function to rebase function pointers in locale structures. Explain why this is necessary. (__set_lc_time_from_win): Use rebase_locale_buf after realloc. (__set_lc_numeric_from_win): Ditto. (__set_lc_monetary_from_win): Ditto. 2010-03-31 Christopher Faylor * sigproc.cc (wait_sig): Make sure that strace is activated on __SIGSTRACE by calling new strace::activate function. * strace.cc (strace::activate): Rename from strace::strace. * strace.h (strace::activate): Define new function. (strace::strace): Call activate. 2010-03-31 Christopher Faylor * fhandler.h (fhandler_base_overlapped): Temporarily (?) make select_pipe_info a friend until the fhandler_tty intertangling can be worked out. * select.cc (select_pipe_info::add_watch_handle): Don't inspect the overlapped event if we're not waiting for I/O. (fhandler_tty_common::select_*): Change to standard function. Don't do kludgy fhandler_pipe coercion. 2010-03-31 Christopher Faylor * fhandler.cc (fhandler_base::dup): Call setup_overlapped unconditionally. (fhandler_base::fork_fixup): Ditto. (fhandler_base::fixup_after_fork): Ditto. (fhandler_base::fixup_after_exec): Ditto. (fhandler_base_overlapped::setup_overlapped): Move to this class from fhandler_base. (handler_base_overlapped::destroy_overlapped): Ditto. (fhandler_base_overlapped::wait_overlapped): Ditto. Track when we expect pending I/O. (fhandler_base_overlapped::read_overlapped): Move to this class from fhandler_base. Return error if ongoing I/O. (fhandler_base_overlapped::write_overlapped): Ditto. (fhandler_base_overlapped::has_ongoing_io): Semi-reinstate previous function. * fhandler.h (fhandler_base::wait_overlapped): Move to fhandler_base_overlapped class. (fhandler_base::write_overlapped): Ditto. (fhandler_base::get_overlapped): Ditto. (fhandler_base::get_overlapped_buffer): Ditto. (fhandler_base_overlapped): New class. (fhandler_pipe): Inherit from fhandler_base_overlapped. Remove overlapped stuff as a result. (fhandler_fifo): Ditto. * pipe.cc (fhandler_pipe::fhandler_pipe): Initialize fhandler_base_overlapped. (pipe): Put a descriptive name in the fhandler. 2010-03-30 Corinna Vinschen * fhandler_socket.cc (fhandler_socket::wait_for_events): Remove call to sig_dispatch_pending. 2010-03-30 Thomas Wolff * fhandler.h (class dev_console): Drop vt100_graphics_mode_active. Add flags vt100_graphics_mode_G0, vt100_graphics_mode_G1 and iso_2022_G1. * fhandler_console.cc: Throughout, tune VT100 graphics mode switching to follow ISO 2022 strictly. (fhandler_console::write) Reset VT100 graphic mode flags on terminal full reset (ESC c). 2010-03-30 Corinna Vinschen * syscalls.cc (open): Remove call to sig_dispatch_pending. 2010-03-30 Corinna Vinschen * net.cc: Remove calls to sig_dispatch_pending throughout. * libc/rexec.cc: Ditto. 2010-03-30 Corinna Vinschen * mount.cc (fs_info::update): Allow variable FILE_SUPPORTS_SPARSE_FILES flag in netapp flag test. Add comment. 2010-03-29 Corinna Vinschen * spawn.cc (find_exec): Enable finding paths in backslash notation, especially for the exec[vl]p functions. * path.cc (symlink_info::check): Disable returning directories with suffix appended here. 2010-03-29 Corinna Vinschen * include/cygwin/version.h: Bump DLL minor version number to 3. 2010-03-29 Corinna Vinschen * fhandler.cc (fhandler_base::fstat): Keep st_ctime and st_birthtime fixed to 2006-12-01 00:00 UTC. 2010-03-29 Corinna Vinschen * libc/rcmd.c: Enable IPv6. 2010-03-28 Christopher Faylor * fhandler.cc (fhandler_base::fstat): Set st_mtime to current time. 2010-03-28 Christopher Faylor * globals.cc (exit_status): Add new ES_EXIT_STARTING enum. * dcrt0.cc (cygwin_exit): Set exit_state to ES_EXIT_STARTING prior to calling real exit. * dll_init.cc (dll_list::detach): Remove dll from linked list and call destructors even if exiting. Don't call __cxa_finalize in exiting case. 2010-03-27 Corinna Vinschen * nlsfuncs.cc (__set_charset_from_locale): Set default charset for locales defaulting to codepage 936 to GB2312. 2010-03-22 Corinna Vinschen * fhandler_socket.cc (fhandler_socket::evaluate_events): Make erase const in parameter list. (fhandler_socket::wait_for_events): Take a DWORD flags value instead of just a bool. Call evaluate_events with erase flag according to MSG_PEEK value in flags. Replace check for dontwait with check for MSG_DONTWAIT in flags. (fhandler_socket::connect): Call wait_for_events with 0 flags value. (fhandler_socket::accept4): Ditto. (fhandler_socket::recv_internal): Save flags in wait_flags. Drop dontwait variable. Call wait_for_events with wait_flags. (fhandler_socket::send_internal): Save MSG_DONTWAIT flag in wait_flags and call wait_for_events with wait_flags as argument. Drop dontwait variable. * fhandler.h (class fhandler_socket): Change second parameter in declaration of wait_for_events to const DWORD. 2010-03-19 Corinna Vinschen * fhandler_disk_file.cc (fhandler_cygdrive::fstat): Add standard read permissions again. 2010-03-18 Corinna Vinschen * shared.cc (init_installation_root): Change to make sure that scope of the lock lasts the entire function. 2010-03-15 Christopher Faylor * shared_info.h (user_info): Add dll_crt0_1 as a friend. (user_info::version): Make LONG to accommodate spinlock use. (user_info::create): New static function renamed from user_info_create. (user_info::initialize): New private function renamed from user_info_initialize. (SHARED_VERSION): Delete. (SHARED_VERSION_MAGIC): Ditto. (USER_VERSION_MAGIC): Ditto. (SHARED_INFO_CB): Ditto. (USER_VERSION): Ditto. (USER_VERSION_MAGIC): Ditto. (CURR_SHARED_MAGIC): Update. (CURR_USER_MAGIC): Ditto. (shared_info::version): Make LONG to accommodate spinlock use. (shared_info::create): New static function mirroring user_info::create. (dll_crt0_1): Accommodate change to user_info::initialize. * spinlock.h (spinlock::setto): New variable member. (spinlock::done): New function. (spinlock::spinlock): Generalize to allow arbitrary values and timeouts. Call done() when lock is not needed. * ntdll.h: Make multiple-inclusion safe. (NtQuerySystemTime): Declare. * shared.cc (installation_root_inited): Rename from shared_mem_inited. (init_installation_root): Make inline. Use a spinlock to ensure that this is initialized only once per session. (user_info::initialize): Rename from user_shared_initialize. Protect with spinlock on sversion and remove other spinlock-like things. Remove reference to user_shared since it is now implicit. Refer to spinlock version of multiple_cygwin_problem to ensure that any spinlock is released. (user_info::create): Rename from user_shared_create. Accommodate change from user_shared_initialize to user_info::initialize. (shared_info::create): New inline function. (shared_info::initialize): Protect with spinlock on sversion. Move heap_init back under specific control of shared_info spinlock. Remove reference to SHARED_INFO_CB and just use sizeof(*this). (memory_init): Move all locking into respective functions where it is needed. Accommodate name changes. Remove call to heap_init(). * syscalls.cc (seteuid32): Accommodate name change to user_info::create(). * mount.cc (mount_info::create_root_entry): Report on errors from add_item since they should be nonexistent. (mount_info::init): Don't initialize nmounts. It should already be zero. Give more verbose error when root_idx < 0. Implicitly use this pointer rather than explicitly referencing mount_table->. (mount_info::add_item): Minor whitespace fix. 2010-03-15 Christopher Faylor * sigproc.cc (no_signals_available): Get sense of the test right for previous botched change. 2010-03-15 Christopher Faylor * sigproc.cc (no_signals_available): Don't try to send a signal if still in cygwin startup code. 2010-03-13 Christopher Faylor * spinlock.h: New file. (spinlock): New class. * shared.cc: Include spinlock.h. (memory_init): Use new spinlock methods rather than roll-your-own. Time out after ten seconds if shared_mem_inited is not initialized. * sync.h: Update copyright. Remove vanity attribution. * sigproc.cc (sigproc_terminate): Avoid attempts to kill the signal thread while we're still initializing or suffer a deadlock. 2010-03-12 Christopher Faylor Throughout change all calls of low_priority_sleep (0) to yield (). * miscfuncs.cc (yield): Rename from low_priority_sleep. Remove all of the logic which called Sleep() and just use SwitchToThread. * miscfuncs.h (yield): Rename from low_priority_sleep. (SLEEP_0_STAY_LOW): Delete unused define. * shared.cc (memory_init): Move heap_init() call directly after shared memory initialization to more closely mimic long-standing program flow. * tty.cc (tty_list::terminate): Replace call to low_priority_sleep with Sleep. 2010-03-10 Christopher Faylor * shared.cc (memory_init): Fix comment. Fix indentation. 2010-03-09 Christopher Faylor * shared_info.h (open_shared): Create function wrapper for common use case. (open_shared): Change fifth argument to a pointer rather than a reference. * fhandler_console.cc (fhandler_console::get_tty_stuff): Eliminate use of dummy variable and call open_shared with constant. * fhandler_process.cc (format_process_mounts): Ditto. * pinfo.cc (pinfo::init): Pass pointer to shloc. * shared.cc (shared_mem_inited): New variable. (open_shared): Crate function wrapper for common use case. (open_shared): Accommodate change to fifth argument to a pointer. (shared_info::initialize): Remove spinlock test. Simplify function. Move get_session_parent_dir call back here. (memory_init): Protect global shared settings with shared_mem_inited spinlock. Move get_session_parent_dir call to shared_info::initialize. 2010-03-09 Christopher Faylor * shared.cc (inst_root_inited): Delete. * (shared_info::initialize): Reorganize. Move call to init_installation_root here under spinlock control. Move unneeded non-shared_info initialization out of this function. (memory_init): Remove call to init_installation_root. Call heap_init and get_session_parent_dir here. 2010-03-04 Corinna Vinschen * syscalls.cc (nt_path_has_executable_suffix): Change storage class of blessed_executable_suffixes to static. (rename): Revert meaning of old_explicit_suffix. Change the rules for appending a .exe suffix and (yikes!) document them. 2010-03-04 Charles Wilson * cygwin.din: Export __xdr functions. * include/cygwin/version.h: Bump version. * posix.sgml: Add a few more XDR functions to list of implemented Solaris functions. 2010-03-03 Charles Wilson Add XDR support. * cygwin.din: Export xdr functions. * include/cygwin/version.h: Bump version. * cygxdr.cc: New. * cygxdr.h: New. * dcrt0.cc (dll_crt0_1): Print the (rare) xdr-related error messages to stderr. * Makefile.in: Add cygxdr. * posix.sgml: Add new XDR functions to list of implemented Solaris functions. 2010-03-01 Christopher Faylor * cygtls.h: Replace /*gentls_offsets*/ at end. 2010-03-01 Christopher Faylor * exception.h: Fix copyright. 2010-02-27 Christopher Faylor Update some copyrights. * cygtls.cc (_cygtls::call): Invoke new exception protection here. (_cygtls::init_thread): Remove conditionalized exception handler setup. (exception_list): Delete declaration. (_cygtls::init_exception_handler): Delete obsolete function. * cygtls.h: Remove (now) unneeded include. (_cygtls): Make this a real C++ class. (_cygtls::handle_exceptions): Remove. (_cygtls::init_exception_handler): Remove. (_cygtls::call2): Make private. (myfault::faulted): Remove unneeded parentheses. * dcrt0.cc (dll_crt0_1): Remove exception handler setup. * dlfcn.cc (dlopen): Ditto. (dlclose): Ditto. * dll_init.cc (dll_dllcrt0_1): Ditto. (dll_list::detach): Use new exception handler protection. * exceptions.cc (dump_exception): Rename to prevent confusion with new class. (exception::handle): Rename from _cygtls::handle_exceptions. Accommodate new exception class. Accommodate rename to dump_exception. * tlsoffsets.h: Regenerate. 2010-02-26 Christopher Faylor * cygtls.h (_cygtls::init_exception_handler): Eliminate argument. (_cygtls::andreas): Convert to a pointer. (san): Convert to a real class with methods. Use a linked list to keep track of previous handlers on the "stack". (myfault): Rewrite to use new san class rather than calling directly into _cygtls. * cygtls.cc (_cygtls::init_exception_handler): Just assume that we're always using the standard exception handler. (_cygtls::init_thread): Reflect loss of argument to init_exception_handler. * dcrt0.cc (dll_crt0_1): Ditto. * dfcn.cc (dlopen): Ditto. (dlclose): Reset the exception handler after FreeLibrary. * dll_init.cc (dll_list::detach): Make sure that the exception handler is initialized before calling destructors. * exceptions.cc (_cygtls::handle_exceptions): Accommodate new andreas pointer. * thread.cc (verifyable_object_isvalid): Pass objectptr to faulted for explicit NULL pointer checking. * tlsoffsets.h: Regenerate. 2010-02-26 Christopher Faylor * mkimport: cd away from temp directory or Windows will have problems removing the directory. 2010-02-26 Corinna Vinschen * libc/strptime.cc: Implement support for era, alt_digits and POSIX padding and width modifiers. (era_info_t): New type. (free_era_info): New static function to free era_info_t storage. (get_era_info): New static function to create era_info_t storage from LC_TIME era information. (alt_digits_t): New type. (get_alt_digits): New static function to create alt_digits_t storage from LC_TIME alt_digits information. (free_alt_digits): New static function to free alt_digits_t storage. (find_alt_digits): New static function to scan input for alternative digits and return them, if any. Return NULL otherwise. (__strptime): New static function taking all code from strptime. Implement handling for E, O, +, 0, and width modifiers per POSIX-1.2008. (strptime): Convert into wrapper function to provide era_info and alt_digits pointers and call __strptime. (conv_num): Take additional alt_digits_t parameter and if it's not NULL, call find_alt_digits to convert. 2010-02-26 Corinna Vinschen * strsig.cc: Fix formatting and copyright. 2010-02-26 Pierre Humblet * security.cc (check_access): Use user.imp_token if appropriate. Set errno and return if DuplicateTokenEx fails . 2010-02-26 Corinna Vinschen Remove all traces of __CYGWIN_USE_BIG_TYPES__. * include/cygwin/config.h: Move Cygwin-specific build flags from newlib's sys/config.h here. Add a comment. 2010-02-25 Yaakov Selkowitz * include/cygwin/signal.h: Define SIGPWR as synonym for SIGLOST. * strsig.cc: Ditto. * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR. 2010-02-25 Corinna Vinschen * lc_era.h (lc_era_t): Fix apparent glibc bug in ja_JP era definition. 2010-02-24 Corinna Vinschen * sec_auth.cc (get_full_privileged_inheritable_token): Fix dumb typo when checking linked token for being a primary token. 2010-02-24 Christopher Faylor * dlfcn.cc (dlopen): Make sure exception handler is really loaded after dynamic load. 2010-02-23 Christopher Faylor * cygtls.cc (_cygtls::init_exception_handler): Force installation of our exception handler to always be at the beginning. 2010-02-23 Christopher Faylor * thread.cc (pthread_mutex::unlock): Don't attempt to unlock if there is an error. 2010-02-22 Christopher Faylor * include/sys/strace.h: Define _STRACE_SPECIAL. (strace_printf_wrap): Fix NOSTRACE definitions. (strace_printf_wrap1): Fix NOSTRACE definitions. (special_printf): Define. * thread.cc: Perform minor syntax fix in a comment. Rename "is_good_initialzer*" to "is_initializer*" throughout. Use pthread_printf rather than debug_printf throughout. Add extra pthread_printf debugging throughout. (pthread_mutex::_new_mutex): New constant value. (pthread_mutex::_unlocked_mutex): Ditto. (pthread_mutex::_destroyed_mutex): Ditto. (pthread_mutex::no_owner): Define new function. (pthread_mutex::can_be_unlocked): Detect no_owner situation. Handle PTHREAD_MUTEX_NORMAL as a special case. (pthread::create_cancel_event): Use C++ boolean values. (pthread::precreate): Use method to set mutex type. (pthread_cond::pthread_cond): Ditto. (pthread_rwlock::pthread_rwlock): Ditto. (pthread_mutex::pthread_mutex): Set owner to _new_mutex initially. (pthread_mutex::~pthread_mutex): Reset various elements to make it clearer if they are incorrectly reused. (pthread_mutex::lock): Add clarifying comment. (pthread_mutex::unlock): Attempt to handle various mutex types correctly. In particular, reinstate ability to have one thread unlock another thread's mutex if type == PTHREAD_MUTEX_NORMAL. (semaphore::_fixup_after_fork): Avoid redundancy. (pthread_mutex::_fixup_after_fork): Ditto. Fix debugging statement. (__pthread_cond_dowait): Accommodate changes to remove previously inexplicable use can_be_unblocked() as a static function. * thread.h: Rename "is_good_initialzer*" to "is_initializer*" throughout. (pthread_mutex): Reorganize. Make many things private. (pthread_mutex::no_owner): Define new method. (pthread_mutex::_new_mutex): Define new constant. (pthread_mutex::_unlocked_mutex): Ditto. (pthread_mutex::_destroyed_mutex): Ditto. 2010-02-22 Corinna Vinschen * lc_era.h: Redefine lc_era_t to keep default date and time formats as well to workaround YA Windows shortcoming. Refresh with latest data. * lc_msg.h: Refresh with latest data. * nlsfuncs.cc (__eval_datetimefmt): Revert latest change. (__set_lc_time_from_win): Rename res to era. Prefer default date and time formats from era array if available. (__set_lc_messages_from_win): Rename res to msg. 2010-02-20 Corinna Vinschen * lc_era.h (lc_era): Fix "ja_JP" era_t_fmt entry to use traditional format. * nlsfuncs.cc (dt_flags): Remove DT_ERACAL since crippled era data in Windows makes it useless. (__eval_datetimefmt): Check if locale's default calender has non-gregorian start year. Use era year also in default date entries, if so. 2010-02-20 Corinna Vinschen * path.cc (warn_msdos): Enforce extended hex printing of multibyte pathnames. 2010-02-19 Christopher Faylor * include/sys/strace.h: Remove old code. Add support for ptrace tracing. 2010-02-19 Corinna Vinschen * lc_era.h: New file. * nlsfuncs.cc: Include lc_era.h. (locale_cmp): convert arguments to char** to be usable for both types, lc_msg_t and lc_era_t. (__set_lc_time_from_win): Handle era-related data 2010-02-19 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::opendir): Try to open directory with stat()-friendly access mask first. Explain why. 2010-02-19 Corinna Vinschen * fhandler_disk_file.cc (fhandler_base::fstat_helper): Set st_rdev to same value as st_dev. Avoid useless debug output in executable check. Add filename to debug output. (fhandler_disk_file::facl): Simplify code calling fstat methods to just call fstat to avoid errors with the cygdrive directory. 2010-02-18 Corinna Vinschen * nlsfuncs.cc (eval_datetimefmt): Rename force to flags. (enum dt_flags): Define. (__eval_datetimefmt): Change force to flags and change type to dt_flags. Accommodate throughout. (__set_lc_time_from_win): Accommodate above change. Set era-related values to empty strings for now. 2010-02-18 Christopher Faylor * fhandler.cc (fhandler_base::setup_overlapped): Revert to starting with handle in signalled state as it seems to fix some hangs. 2010-02-15 Corinna Vinschen * path.cc (path_conv::check): Treat native DOS paths as "noacl". 2010-02-15 Corinna Vinschen * mount.cc (mount_info::conv_to_win32_path): Set UNC path flags to cygdrive prefix path flags. 2010-02-14 Christopher Faylor * fhandler.cc (fhandler_base::setup_overlapped): Don't set signalled state to true initially. (fhandler_base::has_ongoing_io): Delete ill-advised function. (fhandler_base::read_overlapped): Rely on caller having checked nonblocking state. Don't attempt to (incorrectly) check it here. (fhandler_base::write_overlapped): Remove call to has_ongoing_io. * select.cc (peek_pipe): Ditto. * fhandler.h (fhandler_base::has_ongoing_io): Delete declaration. 2010-02-14 Christopher Faylor * regex/regcomp.c (xwcrtomb): Fix one explicable and one inexcplicable C warning. 2010-02-13 Corinna Vinschen * regex/regcomp.c (xwcrtomb): Don't convert Unicode chars outside the base plane always to UTF-8. Call wcsnrtombs instead to allow arbitrary multibyte charsets. 2010-02-12 Corinna Vinschen * regex/regcomp.c (wgetnext): Use size_t as type for n2 since that's what's returned by mbrtowc. * regex/regexec.c (xmbrtowc): Ditto. 2010-02-12 Christopher Faylor * pthread.cc (pthread_mutex_init): Explicitly fill out third arg to pthread_mutex::init. * thread.cc: Remov some obsolete comments. (verifyable_object_isvalid): Reflect change to use thread_magic_t for magic numbers. (pthread_mutex::pthread_mutex): Set magic number to invalid initially until we've verified that everything is valid. (pthread_mutex::unlock): Fix a comment. (verifyable_object::verifyable_object): Delete here. (~verifyable_object::~verifyable_object): Ditto. (pthread_mutex::init): Don't run is_good_initializer for non-static objects. * thread.h (thread_magic_t): New typedef. (verifyable_object::verifyable_object): Use thread_magic_t; (verifyable_object::magic): Ditto. (pthread_mutex::is_good_initializer_or_bad_object): Remove unneeded variable names. (pthread_mutex::can_be_unlocked): Ditto. (pthread_mutex::init): Ditto. Remove default for third argument. 2010-02-12 Corinna Vinschen * regex/regcomp.c (xwcrtomb): New function to convert wide chars outside of the base plane to UTF-8. Call throughout instead of wcrtomb. (wgetnext): Handle surrogate pairs on UTF-16 systems. * regex/regexec.c (xmbrtowc): Ditto. 2010-02-12 Corinna Vinschen * sec_auth.cc (get_user_local_groups): Retrieve name of well known builtin group from system. Explain why. * sec_helper.cc (well_known_builtin_sid): New SID for BUILTIN group. * security.h (well_known_builtin_sid): Declare. 2010-02-11 Pierre Humblet * registry.cc (get_registry_hive_path): Add space in string. 2010-02-11 Corinna Vinschen * regex/engine.c (step): Drop Cygwin-specific definition. (NONCHAR): Better cast here to make the test work. Move comment from step here. (matcher): Disable skipping initial string in multibyte case. * regex/regcomp.c (p_bracket): Don't simplify singleton in the invert case. (p_b_term): Handle early end of pattern after dash in bracket expression. (singleton): Don't ignore the wides just because there's already a singleton in the single byte chars. Fix condition for a singleton wide accordingly. (findmust): Check for LC_CTYPE charset, rather than LC_COLLATE charset. * regex2.h (CHIN): Fix condition in the icase & invert case. (ISWORD): Fix wrong cast to unsigned char. 2010-02-11 Andy Koppe * nlsfuncs.cc (initial_setlocale): Move check whether charset has changed from here... (internal_setlocale): ...to here, to avoid unnecessary work when invoked via CW_INT_SETLOCALE. 2010-02-10 Corinna Vinschen * nlsfuncs.cc (__set_charset_from_locale): Allow "@euro" modifier only for locales which use EUR as currency. 2010-02-10 Corinna Vinschen * nlsfuncs.cc (__get_lcid_from_locale): Convert iu_CA to iu-Latn-CA rather than iu-Cans-CA on Vista and later. (__set_charset_from_locale): Set default charset for iu_CA to UTF-8. 2010-02-10 Christopher Faylor * dcrt0.cc (_dll_crt0): Set _main_tls as early as possible. * thread.cc (pthread_mutex::can_be_unlocked): Remove check for MUTEX_OWNER_ANONYMOUS since it is racy and unsafe. (pthread::init_mainthread): Initialize thread directly from _my_tls. (pthread::self): Ditto. (pthread::get_tls_self_pointer): Delete. (pthread_mutex::pthread_mutex): Use an event rather than a semaphore. (pthread_mutex::lock): Rename from _. Derive self directly. (pthread_mutex::tryunlock): Ditto. (pthread_mutex::destroy): Ditto. (pthread_mutex::unlock): Ditto. Accommodate change from semaphore to event. (pthread_mutex::_fixup_after_fork): Accommodate change from semaphore to event. (pthread_mutex::init): Don't attempt to initialize a semaphore unless it is in an initialized state. Do this check under mutex_initialization_lock.lock * thread.h (fast_mutex::init): Use event rather than semaphore. (fast_mutex::lock): Ditto. (pthread_mutex::_lock): Delete. (pthread_mutex::_unlock): Ditto. (pthread_mutex::_trylock): Ditto. (pthread_mutex::_destroy): Ditto. (pthread_mutex::get_pthread_self): Ditto. (pthread_mutex::get_tls_self_pointer): Ditto. (pthread_mutex::lock): Un-inline. (pthread_mutex::unlock): Ditto. (pthread_mutex::trylock): Ditto. (pthread_mutex::destroy): Ditto. 2010-02-09 Christopher Faylor * cygtls.h (struct _cygtls): Remove unneeded elements. * thread.cc (pthread::exit): Avoid potential double call to _my_tls.remove. * tlsoffsets.h: Regenerate. 2010-02-09 Corinna Vinschen * nlsfuncs.cc (lc_wcstombs): Add `return_invalid' flag to specify whether invalid chars should be ignored or not. Change comment. (__set_lc_monetary_from_win): Call lc_wcstombs with return_invalid flag set. (__set_lc_messages_from_win): Simplify to accommodate the fact that lc_wcstombs just ignores invalid chars. Explain why. 2010-02-09 Corinna Vinschen * nlsfuncs.cc (__set_lc_messages_from_win): Fix typo. 2010-02-09 Corinna Vinschen * lc_msg.h: New file, fix a problem in locales with modifiers. 2010-02-09 Corinna Vinschen * lc_msg.h: New file, generated from running Linux system. 2010-02-09 Corinna Vinschen * lc_msg.h: New file, autogenerated from CLDR data. * nlsfuncs.cc: Include lc_msg.h. (lc_time_buf): Remove. (lc_numeric_buf): Remove. (lc_monetary_buf): Remove. (lc_mbstowcs): Fix previous fix. (__set_lc_time_from_win): Take additional pointer to buffer pointer, defined in newlib. (__set_lc_numeric_from_win): Ditto. (__set_lc_monetary_from_win): Ditto. (locale_cmp): New static function. (__set_lc_messages_from_win): New function to be called from newlib. 2010-02-08 Corinna Vinschen * external.cc (cygwin_internal): Add CW_INT_SETLOCALE case to allow to call internal_setlocale(). * nlsfuncs.cc (internal_setlocale): Make externally available. * include/cygwin/version.h: Bump API minor number. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_INT_SETLOCALE. * nlsfuncs.cc (lc_mbstowcs): Fix call to f_mbtowc. (__set_locale_from_locale_alias): Ignore "@cjknarrow" modifier. 2010-02-07 Corinna Vinschen * nlsfuncs.cc (__get_lcid_from_locale): Handle "@cyrillic" modifier for uz_UZ locale here. (__set_charset_from_locale): Accommodate above change. 2010-02-07 Corinna Vinschen * nlsfuncs.cc (__set_locale_from_locale_alias): New function to read locale aliases from /usr/share/locale/locale.alias. 2010-02-06 Corinna Vinschen * nlsfuncs.cc (__get_lcid_from_locale): Handle no_NO as nb_NO, rather than nn_NO. 2010-02-06 Corinna Vinschen * nlsfuncs.cc (has_modifier): MOve up in file to use in __get_lcid_from_locale as well. (__get_lcid_from_locale): Handle no_NO locale as alias for nn_NO. Default all sr_XY locales to Cyrillic script. Change lcid to Latin script if "@latin" modifier has been specified. (__set_charset_from_locale): Handle Serbian in codepage 1251 case as well. Also check for sr_BA lcid. Restrict "@euro" modifier to locales otherwise defaulting to ISO-8859-1. 2010-02-06 Corinna Vinschen * nlsfuncs.cc (__set_charset_from_locale): Set default charset for "ka_GE" locale to GEORGIAN-PS, for "kk_KZ" to PT154. 2010-02-06 Corinna Vinschen * path.cc (symlink_info::check_nfs_symlink): Reopen file with FILE_READ_EA access since, surprisingly, you need it to read EAs even on NFS. 2010-02-06 Corinna Vinschen * sec_auth.cc (get_full_privileged_inheritable_token): New function to fetch token with full privileges from logon token in Vista and later, and to make token inheritable. Add lengthy comments to explain the function's job. (cygwin_logon_user): Drop calling SetHandleInformation. Enable TCB privilege and call get_full_privileged_inheritable_token. (lsaauth): Don't fetch linked token and don't make handle inheritable here, just call get_full_privileged_inheritable_token instead. (lsaprivkeyauth): Ditto. 2010-02-05 Corinna Vinschen * nlsfuncs.cc (__set_charset_from_locale): Set default charset for "uz_UZ" locale to ISO-8859-1, with the "@cyrillic" modifier to UTF-8. 2010-02-05 Christopher Faylor * dll_init.cc (per_module::run_dtors): Use consistent method for running destructors. 2010-02-04 Christopher Faylor * regcomp.c (p_ere): Workaround incorrect compiler warning. * regerror.c (regatoi): Return non-const string or compiler complains in certain inexplicable situations. 2010-02-04 Corinna Vinschen * regex/engine.c (step): Declare and define with `int ch' rather than `wint_t ch' parameter. Explain why. (NONCHAR): Remove related Cygwin patch here, including wrong comment. 2010-02-04 Corinna Vinschen Replace regex files with multibyte-aware version from FreeBSD. * Makefile.in (install-headers): Remove extra command to install regex.h. (uninstall-headers): Remove extra command to uninstall regex.h. * nlsfuncs.cc (collate_lcid): Make externally available to allow access to collation internals from regex functions. (collate_charset): Ditto. * wchar.h: Add __cplusplus guards to make C-clean. * include/regex.h: New file, replacing regex/regex.h. Remove UCB advertising clause. * regex/COPYRIGHT: Accommodate BSD license. Remove UCB advertising clause. * regex/cclass.h: Remove. * regex/cname.h: New file from FreeBSD. * regex/engine.c: Ditto. (NONCHAR): Tweak for Cygwin. * regex/engine.ih: Remove. * regex/mkh: Remove. * regex/regcomp.c: New file from FreeBSD. Tweak slightly for Cygwin. Import required collate internals from nlsfunc.cc. (p_ere_exp): Add GNU-specific \< and \> handling for word boundaries. (p_simp_re): Ditto. (__collate_range_cmp): Define. (p_b_term): Use Cygwin-specific collate internals. (findmust): Ditto. * regex/regcomp.ih: Remove. * regex/regerror.c: New file from FreeBSD. Fix a few compiler warnings. * regex/regerror.ih: Remove. * regex/regex.7: New file from FreeBSD. Remove UCB advertising clause. * regex/regex.h: Remove. Replaced by include/regex.h. * regex/regexec.c: New file from FreeBSD. Fix a few compiler warnings. * regex/regfree.c: New file from FreeBSD. * regex/tests: Remove. * regex/utils.h: New file from FreeBSD. 2010-02-03 Christopher Faylor * sigproc.cc (get_proc_lock): Fix error message typo. 2010-02-03 Corinna Vinschen * fhandler_disk_file.cc (fhandler_base::fstat_helper): Workaround another bug in NWFS. Add comment to explain why. Improve debug output in case the NT calls to test for binary fail. * path.h (path_conv::fs_is_cifs): New method. (path_conv::fs_is_nwfs): New method. 2010-02-02 Corinna Vinschen * include/paths.h (_PATH_MNTTAB): Define. (_PATH_MOUNTED): Define. * include/mntent.h: Include paths.h. Define MNTTAB and MOUNTED as their paths.h equivalents. Add comment. 2010-02-01 Christopher Faylor * dcrt0.cc (atexit_lock): Delete. (cygwin_exit): Remove atexit lock. (cygwin_atexit): Ditto. Rename parameter to match newlib. Call __cxa_atexit when invoked by a registered DLL. * dll_init.cc (remove_dll_atexit): Delete. (dll_list::find): New function. (dll_list::detach): Use dll_list::find to find dll associated with return address. Use __cxa_finalize to run atexit functions associated with the dll. (cygwin_detach_dll): Don't assume that HANDLE == void *. * dll_init.h (dll_list::find): Declare. (__cxa_atexit): Ditto. (__cxa_finalize): Ditto. * init.cc (dll_entry): Clarify comment. 2010-02-02 Dave Korn * how-startup-shutdown-works.txt: Add new document. 2010-01-29 Corinna Vinschen * sec_auth.cc (lsaauth): Use CYG_LSA_MAGIC as checksum start value to decouple from Cygwin release. 2010-01-29 Corinna Vinschen * libc/strfmon.c (__setup_vars): Test for an empty string rather than for a NULL pointer. 2010-01-29 Christopher Faylor * dll_init.cc (remove_dll_atexit): New function. (dll_list::detach): Run any atexit handlers registered in the DLL prior to unloading. 2010-01-29 Christopher Faylor * libc/strfmon.c (__setup_vars): Fix compiler warning about assigning const strings. Compare a pointer to NULL rather than '\0'. * dll_init.cc (dll_dllcrt0_1): Minor comment fix. * pipe.cc (fhandler_pipe::create_selectable): Remove Win9x accommodation. 2010-01-29 Corinna Vinschen Throughout, use FileBothDirectoryInformation info class rather than FileDirectoryInformation info class to avoid problems with incomplete filesystem implementations. Fix comments accordingly. * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Set fname->Length to 0 in error case to avoid potential crash in debug output. (fhandler_disk_file::readdir): Try to speed up the working default case. Check for STATUS_INVALID_NETWORK_RESPONSE as potential status value returned by filesystems not implementing FileIdBothDirectoryInformation. * ntdll.h (STATUS_INVALID_NETWORK_RESPONSE): Define. (FILE_BOTH_DIRECTORY_INFORMATION): Rename to official name. * path.cc (symlink_info::check): Don't request FILE_READ_EA access, it's not required for NFS. Try to speed up the working default case. Check for STATUS_INVALID_NETWORK_RESPONSE as potential status value returned by filesystems not supporting non-NULL EA parameters. Fix the way fs.update is called. Improve debug output. 2010-01-28 Corinna Vinschen * Makefile.in (tags, ctags, CTAGS)): Add rules to create tags file. 2010-01-25 Corinna Vinschen * nlsfuncs.cc (__get_lcid_from_locale): Add comments. Fix typos in comments. Make sure to set last_lcid every time. Return locale without territory part as invalid. Handle modern serbian territory names per ISO 3166 on older systems as well. Add appropriate comment. (__set_charset_from_locale): Handle LCID for sr_CS as well to make older systems happy. 2010-01-25 Corinna Vinschen * nlsfuncs.cc (__set_charset_from_locale): Rearrange to set charset more closely aligned to Glibc. 2010-01-25 Corinna Vinschen * spawn.cc (spawn_guts): Only try to remove long path prefix from runpath if runpath is not NULL. 2010-01-25 Corinna Vinschen * nlsfuncs.cc (__get_lcid_from_locale): Fix a comment. Handle special language/TERRITORY combinations explicitely. Explain why. 2010-01-24 Corinna Vinschen * nlsfuncs.cc (__set_charset_from_locale): Fix comment. 2010-01-24 Corinna Vinschen * nlsfuncs.cc (check_codepage): Move from syscalls.cc here. (internal_setlocale): Ditto. (initial_setlocale): Ditto. (setlocale): Ditto. * strfuncs.cc (__sjis_wctomb): Revert previous patch. (__sjis_mbtowc): Ditto. * syscalls.cc: Move setlocale-related functions to nlsfuncs.cc. 2010-01-23 Corinna Vinschen * strfuncs.cc (__sjis_wctomb): Special handling for characters which differ between SJIS and Windows codepage 932, if charset is "SJIS". (__sjis_mbtowc): Ditto. (_jis_wctomb): Remove. (__jis_mbtowc): Remove. 2010-01-23 Corinna Vinschen * nlsfuncs.cc (wcsxfrm): Call LCMapStringW with LCMAP_BYTEREV flag to allow correct comparison using wcscmp. 2010-01-22 Corinna Vinschen * posix.sgml (strfmon): Move to implemented SUSv4 API. 2010-01-22 Corinna Vinschen * Makefile.in (DLL_OFILES): Add nlsfunc.o and strfmon.o. * autoload.cc (LocaleNameToLCID): Define. * cygwin.din (strfmon): Export. * nlsfuncs.cc: New file. Define a lot of internal functions called from setlocale. (wcscoll): Implement locale-aware here, using CompareStringW function. (strcoll): Ditto. (wcsxfrm): Implement locale-aware here, usingLCMapStringW function. (strxfrm): Ditto. (__set_charset_from_locale): Replace __set_charset_from_codepage. Return Linux-compatible charset. * strfuncs.cc (__set_charset_from_codepage): Remove. * wchar.h (__set_charset_from_codepage): Drop definition. * wincap.h (wincaps::has_localenames): New element. * wincap.cc: Implement above element throughout. * libc/strfmon.c: New file. * libc/strptime.cc: Remove locale constant strings in favor of access to locale-specifc data. (strptime): Point _CurrentTimeLocale to locale-specific data. Throughout use correct locale-specific format fields for all locale-specific formats. * include/monetary.h: New file. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. 2010-01-18 Corinna Vinschen * strfuncs.cc: Remove needless includes. 2010-01-17 Corinna Vinschen * syscalls.cc (internal_setlocale): Use UTF-8 internally if external charset is ASCII. 2010-01-15 Corinna Vinschen * libc/fnmatch.c: Replace with multibyte capable version from FreeBSD. 2010-01-15 Corinna Vinschen * fhandler_socket.cc (fhandler_socket::accept4): Reset async flag on accepted socket. 2010-01-15 Pierre A. Humblet * fhandler_socket.cc (fhandler_socket::accept4): Set nonblocking flag exactly according to flags, as on Linux. * net.cc (cygwin_accept): Maintain BSD semantics here. 2010-01-15 Corinna Vinschen * cygwin.din (accept4): Export. * fhandler.h (fhandler_socket::accept4): Rename from accept. Take additional flag parameter. * fhandler_socket.cc (fhandler_socket::accept4): Ditto. Handle SOCK_NONBLOCK and SOCK_CLOEXEC flags. * net.cc (cygwin_socket): Handle SOCK_NONBLOCK and SOCK_CLOEXEC flags in type. Check for invalid flag values. (socketpair): Ditto. (cygwin_accept): Accommodate renaming of fhandler_socket::accept function to accept4. (accept4): New function. * posix.sgml: Mention accept4 as GNU extensions. * include/cygwin/socket.h (SOCK_NONBLOCK): Define. (SOCK_CLOEXEC): Define. (_SOCK_FLAG_MASK): Define when building Cygwin. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. * include/sys/socket.h (accept4): Declare. 2010-01-15 Corinna Vinschen * posix.sgml: Mention dup3 and pipe2 as GNU extensions. 2010-01-14 Corinna Vinschen * dcrt0.cc (dll_crt0_1): Reset locale to "C" at the last moment before calling the application's main. * syscalls.cc (internal_setlocale): Don't reset locale to "C here. Change comment accordingly. 2010-01-14 Corinna Vinschen * cygwin.din (dup3): Export. (pipe2): Export. * dtable.cc (dtable::dup_worker): Take additional flags parameter. Handle O_CLOEXEC flag. (dtable::dup3): Rename from dup2. Take additional flags parameter. Check for valid flags. Drop check for newfd == oldfd. * dtable.h (dtable::dup_worker): Add flags parameter. (dtable::dup3): Rename from dup2. * fcntl.cc (fcntl64): Add F_DUPFD_CLOEXEC case. * fhandler.h (fhandler_mailslot::get_object_attr): Add flags parameter. * fhandler.cc (fhandler_base::open): Use security attribute with inheritance according to setting of O_CLOEXEC flag. * fhandler_console.cc (fhandler_console::open): Ditto. * fhandler_fifo.cc (sec_user_cloexec): New inline function to create security attribute with inheritance according to setting of O_CLOEXEC flag. (fhandler_fifo::open): Call sec_user_cloexec to fetch security attribute. (fhandler_fifo::wait): Ditto. * fhandler_mem.cc (fhandler_dev_mem::open): Ditto. * fhandler_mailslot.cc (fhandler_mailslot::get_object_attr): Take additional flags parameter. Use security attribute with inheritance according to setting of O_CLOEXEC flag. (fhandler_mailslot::open): Call get_object_attr with flags parameter. * fhandler_registry.cc (fhandler_registry::open): Call set_close_on_exec on real handles to accommodate O_CLOEXEC flag. * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. * fhandler_tape.cc: Create mutex with inheritance according to setting of O_CLOEXEC flag. * pipe.cc: Replace usage of O_NOINHERIT with O_CLOEXEC. (fhandler_pipe::init): Simplify setting close_on_exec flag. (fhandler_pipe::open): Remove setting close_on_exec flag. (fhandler_pipe::create): Use security attribute with inheritance according to setting of O_CLOEXEC flag. (pipe2): New exported function. * posix_ipc.cc: Throughout, open backing files with O_CLOEXEC flag to follow POSIX semantics. * security.h (sec_none_cloexec): New define. * syscalls.cc (dup): Add missing extern "C" qualifier. Accommodate renaming of dtable::dup2 to dtable::dup3. (dup2): Ditto. Check newfd == oldfd here. (dup3): New function. Check newfd == oldfd here. (open): Set close_on_exec flag according to O_CLOEXEC flag before calling fhandler->open. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. 2010-01-13 Corinna Vinschen * include/fcntl.h (O_TTY_INIT): Define as 0. 2010-01-13 Corinna Vinschen * fhandler_tty.cc (fhandler_tty_master::init): Don't erase all default termios settings of slave console. 2010-01-13 Corinna Vinschen * syscalls.cc (rename): Don't exit prematurely with EROFS when trying to rename an AF_LOCAL socket or when trying to replace an AF_LOCAL socket. 2010-01-12 Corinna Vinschen * globals.cc (ro_u_nwfs): New R/O unicode string. * mount.cc (fs_info::update): Check for NWFS filesystem. Set has_buggy_basic_info, if so. Add comment to explain why. (fillout_mntent): Add "nwfs" string to fs_names array. * mount.h (enum fs_info_type): Add nwfs. (class fs_info): Add has_buggy_basic_info status flag. Add accessors for has_buggy_basic_info and is_nwfs. * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Accommodate filesystems with broken FileBasicInformation handling. * path.cc (symlink_info::check): Ditto. * path.h (path_conv::has_buggy_basic_info): Add method. 2010-01-12 Corinna Vinschen * dtable.cc (build_fh_name_worker): Remove. Move all functionality back into build_fh_name. (build_fh_name): Drop unused HANDLE parameter. Drop call to pc.fillin. Remove disabled build_fh_name with UNICODE_STRING name parameter. * dtable.h (build_fh_name): Drop HANDLE parameter from declaration. Remove declaration for build_fh_name with UNICODE_STRING name parameter. * path.cc (path_conv::fillin): Remove. (symlink_info::check): Fix comment. * path.h (path_conv::fillin): Remove declaration. * dir.cc: Accommodate change in build_fh_name parameters throughout. * sec_acl.cc: Ditto. * syscalls.cc: Ditto. * ntea.cc (getxattr_worker): Fix debug output. (setxattr_worker): Ditto. * times.cc (utimens_worker): Ditto. 2010-01-11 Corinna Vinschen * fhandler_proc.cc (format_proc_stat): Use new in_buf. (format_proc_cpuinfo): Replace szBuffer with a union in_buf. Use type correct throughout. Add a couple of missing or newer cpu flags. Allow certain AMD flags for intel as well. 2010-01-10 Corinna Vinschen * fhandler.h (fhandler_base::fstat_helper): Declare timestamps as PLARGE_INTEGER. * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Accommodate fstat_helper change of timestamp arguments. (fhandler_base::fstat_by_name): Ditto. (fhandler_base::fstat_helper): Define with timestamps as PLARGE_INTEGER. Accommodate in call to to_timestruc_t. 2010-01-08 Corinna Vinschen * sec_auth.cc (get_token_group_sidlist): Add BUILTIN\Users account to all created tokens. * sec_helper.cc (well_known_users_sid): Define as BUILTIN\Users. * security.h (well_known_users_sid): Declare. 2010-01-01 Christopher Faylor * dcrt0.cc: Bump copyright. 2010-01-01 Christopher Faylor * dcrt0.cc (dll_crt0_1): Move internal locale setting prior to potential globify to prevent creation of unglobbed filenames in the wrong character set.