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.