(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.
* avr.h (AVR_ISA_2xxe): Define.
* config/tc-avr.c (mcu_types): Change the ISA tyoe of the attiny26
to AVR_ISA_2xxe.
(avr_operand): Disallow post-increment addressing in the lpm
instruction for the attiny26.
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.
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.
* libc/machine/spu/straddr.h: New file, supplies _straddr.
* libc/machine/spu/strcat.c: Use _straddr and _strcpy.
* libc/machine/spu/strcpy.c: Use _strcpy.
* libc/machine/spu/strcpy.h: Supply _strcpy for optimized SPU
str[n]cpy and str[n]cat.
* libc/machine/spu/strncat.c: Use _straddr and _strcpy.
* libc/machine/spu/strncpy.c: Use _strcpy.
* libc/machine/powerpc/vfprintf.c (_VFPRINTF_R): Prepare
for user specifying --disable-newlib-io-long-long on configure.
Call _fflush_r instead of fflush. For _mbtowc_r, pass the
reentrant pointer passed in rather than _REENT.
* libc/stdlib/getopt.c (getopt_internal): Handle optional
arguments better for long options and short options not
appearing as the first option in a sequence.
* libc/machine/spu/straddr.h: New file, supplies _straddr.
* libc/machine/spu/strcat.c: Use _straddr and _strcpy.
* libc/machine/spu/strcpy.c: Use _strcpy.
* libc/machine/spu/strcpy.h: Supply _strcpy for optimized SPU
str[n]cpy and str[n]cat.
* libc/machine/spu/strncat.c: Use _straddr and _strcpy.
* libc/machine/spu/strncpy.c: Use _strcpy.
* 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.
read/write of 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.
* Makefile.in (CYGWIN_OBJS): Remove smallprint.o.
(cygserver.exe): Remove strfuncs.o
(strfuncs.o): Drop rule.
* bsd_log.cc (_vlog): Use snprintf/vsnprintf instead of
__small_sprintf/__small_vsprintf.
* sysv_sem.cc (seminit): Use sys_malloc instead of malloc. Use
snprintf instead of __small_sprintf.
(semunload): Free the above allocated sema_mtx names here.
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.
(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.
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.
(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.