2008-03-01 Corinna Vinschen * exceptions.cc (_cygtls::handle_exceptions): Only call rtl_unwind when exiting. Just return, don't set thread context. * gendef (_setjmp): Store %fs:0 in jmp_buf. (_sjfault): Ditto. (_ljfault): Restore %fs:0 from jmp_buf. (_longjmp): Ditto. 2008-02-29 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Call close_fs instead of close to avoid calling close from wrong class when changing a file system based device node. (fhandler_disk_file::fchown): Ditto. (fhandler_disk_file::facl): Ditto. 2008-02-28 Corinna Vinschen * exceptions.cc (_cygtls::handle_exceptions): When being debugged, leave through SetThreadContext, too, to keep exception handler stack intact. 2008-02-28 Corinna Vinschen * exceptions.cc (open_stackdumpfile): Add comments. 2008-02-28 Corinna Vinschen * exceptions.cc (open_stackdumpfile): Use NtCreateFile to create stackdump file. 2008-02-27 Corinna Vinschen * exceptions.cc (stack_info::walk): Fix typo. 2008-02-27 Corinna Vinschen * cygtls.cc (_cygtls::init_exception_handler): Fix comment. 2008-02-27 Corinna Vinschen * (struct __DIR_cache): Switch order of members so that the buffer given to NtQueryDirectoryFile is 8 byte aligned. 2008-02-27 Christopher Faylor * cygtls.cc (_cygtls::handle_threadlist_exception): Make it clear that the function never actually returns. * exceptions.cc (_cygtls::handle_exceptions): Jump out of function rather than returning to avoid meddling by previously installed exception handlers. 2008-02-25 Corinna Vinschen * dcrt0.cc (initial_env): Only use local buffer "buf" if DEBUGGING is enabled. Replace calls to GetEnvironmentVariable by calls to GetEnvironmentVariableA for clarity. Call GetEnvironmentVariableA with NULL buffer. (cygbench): Ditto, drop local buffer. * environ.cc (getearly): Call GetEnvironmentVariableA. (environ_init): Retrieve unicode environment and convert to current codepage locally. (getwinenveq): Ditto. * exceptions.cc (try_to_debug): Accommodate new sys_mbstowcs calling convention. * fhandler_clipboard.cc (set_clipboard): Call sys_mbstowcs to retrieve required buffer length. * fork.cc (frok::child): Call GetEnvironmentVariableA. * miscfuncs.cc: Accommodate changed arguments in calls to sys_mbstowcs. * sec_auth.cc: Ditto. * strfuncs.cc (sys_wcstombs_alloc): Fix formatting. (sys_mbstowcs): Change arguments to allow specifying a source string length. (sys_mbstowcs_alloc): Ditto. * uinfo.cc (cygheap_user::ontherange): Accommodate changed arguments in calls to sys_mbstowcs. * winsup.h (sys_mbstowcs): Adjust declaration. (sys_mbstowcs_alloc): Ditto. 2008-02-20 Corinna Vinschen * path.cc (cwdstuff::set): Revert error handling change in case DuplicateHandle fails, because it breaks Vista/Longhorn workaround. 2008-02-19 Christopher Faylor * sigproc.cc (sig_send): Use sigmask of target thread if it is specified otherwise default to main sigmask. 2008-02-16 Corinna Vinschen * fhandler.cc (fhandler_base::fpathconf): Fix _PC_NAME_MAX and _PC_PATH_MAX cases. 2008-02-15 Corinna Vinschen * include/sys/cygwin.h (__INT_MAX_PATH): Remove. (external_pinfo): Convert program_long to pointer. * external.cc (fillout_pinfo): Add buffer for program_long value. 2008-02-15 Corinna Vinschen * include/sys/cygwin.h (__INT_MAX_PATH): Define to 32K. (external_pinfo): Set size of program_long to __INT_MAX_PATH. 2008-02-15 Christopher Faylor * include/sys/cygwin.h (external_pinfo): Define program_long size using external buffer size rather than cygwin-internal buffer size. 2008-02-15 Christopher Faylor Perform whitespace cleanup throughout. * dcrt0.cc (signal_shift_subtract): Eliminate ancient backwards compatibility. (check_sanity_and_sync): Ditto. * winsup.h (SIGTOMASK): Ditto. Just use constant in signal calculation. * include/cygwin/version: Remove backwards signal mask compatibility define. * path.cc (symlink_info::check_sysfile): Cosmetic change. * registry.cc (get_registry_hive_path): Remove unneeded variable. * exceptions.cc (handle_sigsuspend): Eliminate thread signal mask and use either main sigmask or current thread sigmask. (set_process_mask): Ditto. (sighold): Ditto. (sigrelse): Ditto. (sigset): Ditto. (set_process_mask_delta): Ditto. (_cygtls::call_signal_handler): Ditto. * fhandler_process.cc (format_process_status): Ditto. * fhandler_termios.cc (fhandler_termios::bg_check): Ditto. * pinfo.h (class pinfo): Ditto. * select.cc (pselect): Ditto. * signal.cc (sigprocmask): Ditto. (abort): Ditto. (sigpause): Ditto. (sigsend): Ditto. (wait_sig): Ditto. * thread.h (pthread::parent_tls): New member. * thread.cc (pthread::pthread): Record parent_tls here. (pthread::thread_init_wrapper): Initialize sigmask from parent thread. 2008-02-14 Corinna Vinschen * cygheap.cc (cwcsdup): New function. (cwcsdup1): New function. * cygheap.h (cygheap_user::get_windows_id): New method returning PWCHAR. (cwcsdup): Declare. (cwcsdup1): Declare. * registry.cc (get_registry_hive_path): Use WCHAR instead of char throughout. (load_registry_hive): Ditto. * registry.h (get_registry_hive_path): Change declaration accordingly. (load_registry_hive): Ditto. * sec_helper.cc (cygpsid::string): New method returning PWCHAR. * security.h (cygpsid::string): Declare. * syscalls.cc (seteuid32): Convert local name var to WCHAR. * uinfo.cc (cygheap_user::env_userprofile): Convert local name buffers to WCHAR. Call sys_wcstombs_alloc to generate puserprof buffer. * winsup.h: Fix comment. (NT_MAX_PATH): New definition for maximum internal path length. Use throughout where appropriate. * include/limits.h (PATH_MAX): Set to 4096 as on Linux. 2008-02-13 Christopher Faylor * configure.in: Remove non-working options. * configure: Regenerate. 2008-02-13 Christopher Faylor * syscalls.cc (_isatty): Define as an alias to isatty to override newlib version. * thread.cc (pthread_kill): Deal with signal 0 as per POSIX and also avoid manipulating an invalid thread. 2008-02-13 Corinna Vinschen * posix.sgml: Move llrint, llrintf, llrintl, lrintl, rintl, wcstol, wcstoll, wcstoul, wcstoull, wcsxfrm from unimplemented to implemented POSIX interfaces. Change headline of "GNU extensions" to "GNU and Linux extensions". Add fgetxattr, flistxattr, fremovexattr, fsetxattr, getxattr, lgetxattr, listxattr, llistxattr, lremovexattr, lsetxattr, removexattr, setxattr, wcpcpy and wcpncpy to list of implemented GNU functions. 2008-02-13 Corinna Vinschen * cygtls.cc (_cygtls::init_exception_handler): Revert patch from 2005-12-02. * exceptions.cc (stack_info::walk): Add workaround for NT 5.2 64 bit OSes. * wincap.h (wincaps::has_restricted_stack_args): New element. * wincap.cc: Implement above element throughout. (wincapc::init): Reset has_restricted_stack_args if not running under WOW64. 2008-02-11 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::fgetxattr): Remove unused attr. (fhandler_disk_file::fsetxattr): Ditto. * include/attr/xattr.h: New file. 2008-02-11 Corinna Vinschen * dcrt0.cc (dll_crt0_1): Fix typo in call to sys_wcstombs. * miscfuncs.cc (next_char): Initialize ret to keep gcc happy. 2008-02-10 Corinna Vinschen * Makefile.in (DLL_OFILES): Add ntea.o. * cygwin.din (getxattr, listxattr, removexattr, setxattr, lgetxattr, llistxattr, lremovexattr, lsetxattr, fgetxattr, flistxattr, fremovexattr, fsetxattr): Export Linux extended attribute functions. Sort. * errno.cc (errmap): Add mappings for ERROR_EAS_DIDNT_FIT, ERROR_EAS_NOT_SUPPORTED, ERROR_EA_LIST_INCONSISTENT, ERROR_EA_TABLE_FULL, ERROR_FILE_CORRUPT, ERROR_INVALID_EA_NAME. * fhandler.h (class fhandler_base): Declare new fgetxattr and fsetxattr methods. (class fhandler_disk_file): Ditto. * fhandler.cc (fhandler_base::fgetxattr): New method. (fhandler_base::fsetxattr): New method. * fhandler_disk_file.cc (fhandler_disk_file::fgetxattr): New method. (fhandler_disk_file::fsetxattr): New method. * ntdll.h (STATUS_EA_TOO_LARGE): Define. (STATUS_NONEXISTENT_EA_ENTRY): Define. (STATUS_NO_EAS_ON_FILE): Define. * ntea.cc (read_ea): Rewrite for long pathnames and for using with Linux extended attribute functions. (write_ea): Ditto. (getxattr_worker): New static function. (getxattr): New function. (lgetxattr): New function. (fgetxattr): New function. (listxattr): New function. (llistxattr): New function. (flistxattr): New function. (setxattr_worker): New static function. (setxattr): New function. (lsetxattr): New function. (fsetxattr): New function. (removexattr): New function. (lsetxattr): New function. (fsetxattr): New function. * security.h (read_ea): Change declaration according to above changes. (write_ea): Ditto. * include/cygwin/version.h: Bump API minor version. 2008-02-10 Corinna Vinschen * libc/ftw.cc (ftw): Allow nfds <= 0 for glibc compatibility. * libc/nftw.c (nftw): Ditto. 2008-02-07 Corinna Vinschen * dtable.cc (dtable::init_std_file_from_handle): Set access to read/write if handle is connected to a tty or console. * fhandler_dsp.cc (fhandler_dev_dsp::dup): Set open flags correctly after duplicating from archetype. * fhandler_tty.cc (fhandler_tty_slave::dup): Ditto. (fhandler_pty_master::dup): Ditto. 2008-02-06 Corinna Vinschen * miscfuncs.cc (next_char): Fix typos in comment. * strfuncs.cc: Remove cygserver guards. 2008-02-06 Corinna Vinschen * fhandler.h (fhandler_console::trunc_buf): Add to use as cache for truncated multibyte characters on input. (fhandler_console::write_replacement_char): Declare new method. * fhandler_console.cc (CONVERT_LIMIT): Raise to 64K. (fhandler_console::fhandler_console): Initialize trunc_buf. (ERR): Define as independent value again. (fhandler_console::write_replacement_char): New method to print replacement chars. (fhandler_console::write_normal): Add handling for truncated multibyte sequences. Call next_char instead of pathetic CharNextExA function. Don't change src, rather just work with found later on. * miscfuncs.cc (is_cp_multibyte): Move here from strfuncs.cc. Don't call Windows function, restrict to well-known ANSI/OEM codepages and UTF-8. (next_char): Call CharNextExA only for doublebyte codepages. Implement for UTF-8 here. * strfuncs.cc (is_cp_multibyte): Move to miscfuncs.cc. * winsup.h (next_char): Declare. * include/limits.h (MB_LEN_MAX): Set to maximum value of MB_CUR_MAX as defined by newlib for now. 2008-02-05 Corinna Vinschen * autoload.cc (CharToOemA): Remove. (CharNextExA): Define. * environ.cc (codepage_init): Un-static. Set active_codepage to active codepage. Default to ansi regardless of buf pointer. * fhandler.h (dev_console::get_console_cp): New method. (dev_console::con_to_str): Change declaration according to new implementation. (dev_console::str_to_con): Ditto. * fhandler_console.cc (cp_convert): Remove. (dev_console::con_to_str): Redefine to take WCHAR as incoming console char. (dev_console::get_console_cp): Return correct codepage according to alternate_charset_active setting. (dev_console::str_to_con): Redefine to create WCHAR buffer for console output. (fhandler_console::read): Read console input as WCHARs. (base_chars): Fix typo in comment. (fhandler_console::char_command): Save and restore console output buffer using UNICODE functions. (fhandler_console::write_normal): Convert to write output in UNICODE. Use CharNextExA to recognize multibyte characters in input. Workaround problem with UTF-8 and MultiByteToWideChar. Simplify the loop for printing "normal" characters. * strfuncs.cc (active_codepage): New variable to store active codepage. (get_cp): Call codepage_init() if active_codepage is uninitialized. Just return active_codepage. (is_cp_multibyte): New function. * winsup.h (active_codepage): Declare. (codepage_init): Declare. (is_cp_multibyte): Declare. 2008-02-03 Brian Dessent * smallprint.cc (__small_vsprintf): Use HEAP_NOTHEAP for type. * strfuncs.cc (sys_wcstombs_alloc): Guard use of ccalloc to !__OUTSIDE_CYGWIN__ for use in cygserver. (sys_mbstowcs_alloc): Ditto. 2008-02-01 Corinna Vinschen * miscfuncs.cc (cygwin_wcsncasecmp): Never access more than n characters. (cygwin_strncasecmp): Ditto. Fix for strings longer than n. 2008-02-01 Corinna Vinschen * string.h: Re-enable inline strcasematch and strncasematch implementations and rename to ascii_strcasematch/ascii_strncasematch. * dcrt0.cc: Replace str[n]casematch with ascii_str[n]casematch where applicable. * environ.cc: Ditto. * fhandler_process.cc: Ditto. * hookapi.cc: Ditto. * path.cc: Ditto. * spawn.cc: Ditto. * strace.cc: Ditto. * syscalls.cc: Ditto. * uinfo.cc: Ditto. * winf.cc: Ditto. 2008-01-31 Corinna Vinschen * dcrt0.cc (dll_crt0_1): Use GetCommandLineW and convert to current codepage. * environ.cc (set_file_api_mode): Always set file api to ANSI if not using the OEM codepage. (codepage_init): Allow "utf8" codepage. * fhandler_clipboard.cc (set_clipboard): Convert clipbuf to void and cast as needed. Always convert input to wide char and write CF_UNICODETEXT to clipboard. (fhandler_dev_clipboard::read): Read CF_UNICODETEXT from clipboard and convert to current codepage if CYGWIN_NATIVE format is not available. * fhandler_console.cc: Drop redundant undef. * smallprint.cc (__small_vsprintf): Convert PWCHAR and UNICODE_STRING to current codepage for printing. * strfuncs.cc: Use PWCHAR throughout. (get_cp): Return CP_UTF8 for utf8_cp codepage setting. (sys_wcstombs): Allow NULL target buffer. (sys_wcstombs_alloc): New function. (sys_mbstowcs_alloc): Ditto. * winsup.h (codepage_type): Add utf8_cp. (HEAP_NOTHEAP): Define. (sys_wcstombs_alloc): Declare. (sys_mbstowcs_alloc): Declare. 2008-01-31 Corinna Vinschen * cygheap.h (struct cwdstuff): Add dir member to store cwd handle. (cwdstuff::get_handle): New method. * path.cc (cwdstuff::set): When doit is true, always try to get directory handle. Fail if duplicating handle fails. Store handle in dir. Fix potential SEGV when setting drive_length. 2008-01-28 Corinna Vinschen * path.cc: Fix Samba version in comment. 2008-01-24 Corinna Vinschen * path.cc (fs_info::update): Fix old-style Samba test to support recent as well as upcoming Samba releases. 2008-01-22 Corinna Vinschen * ntdll.h (struct _FILE_FS_OBJECTID_INFORMATION): Define. * path.cc (struct smb_extended_info): Define. (fs_info::update): Request object id info to get Samba information. Set flags according to new implementation. * path.h (struct fs_info): Add samba_version to status_flags. Implement flags() and samba_version() using IMPLEMENT_STATUS_FLAG. 2008-01-21 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::link): Open file with READ_CONTROL for Vista/Longhorn's sake. 2008-01-15 Corinna Vinschen * Makefile.in (install-libs): Overwrite newlib's libg.a with symlink to libcygwin.a. 2008-01-15 Corinna Vinschen * Makefile.in (DLL_OFILES): Remove memmem.o. * memmem.cc: Remove in favor of newlib implementation. 2008-01-07 Corinna Vinschen * fhandler.h: Update copyright. * include/limits.h: Ditto. 2008-01-06 Christopher Faylor * fhandler.h (fhandler_base::is_tty): Make bool. (fhandler_serial::is_tty): Ditto. (fhandler_termios::is_tty): Ditto. (fhandler_base::is_slow): Return bool value. (fhandler_socket::is_slow): Ditto. (fhandler_serial::is_slow): Ditto. (fhandler_console::is_slow): Ditto. (fhandler_tty_common::is_slow): Ditto. (fhandler_tty_master::is_slow): Ditto. (fhandler_dev_null::is_slow): Ditto. 2008-01-06 Christopher Faylor * include/limits.h (TTY_NAME_MAX): Increase size to same as linux to allow for (at least) null terminating byte for "/dev/console". 2008-01-01 Christopher Faylor * tty.cc: Update copyright. * pipe.cc: Ditto. 2008-01-01 Christopher Faylor * newsym: First stab at understanding data as well as functions. * pipe.cc (fhandler_pipe::init): Move more intelligence here. (fhandler_pipe::create): Simplify based on above change. * tty.cc (tty_list::allocate): Remove non-NT code.