diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2006-02-07 15:49:08 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2006-02-07 15:49:08 +0000 |
commit | 03a49a00ab2239e769c61592ea946d151ea95114 (patch) | |
tree | f7bad6c6fd475c542d11a6573b22395a23a287d4 /winsup/cygwin/miscfuncs.cc | |
parent | 3cb155a97f98f2f7e9e68b6c536b9bb3777e33d8 (diff) | |
download | cygnal-03a49a00ab2239e769c61592ea946d151ea95114.tar.gz cygnal-03a49a00ab2239e769c61592ea946d151ea95114.tar.bz2 cygnal-03a49a00ab2239e769c61592ea946d151ea95114.zip |
* dtable.cc (handle_to_fn): Accomodate new argument order in call to
sys_wcstombs.
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Call sys_wcstombs
instead of just wcstombs to accomodate OEM codepages.
* miscfuncs.cc (sys_wcstombs): Split len argument in source and target
length. Always 0-terminate result in target string.
* security.cc (lsa2wchar): Remove unused function.
(lsa2str): Ditto.
(get_lsa_srv_inf): Ditto.
(get_logon_server): Accomodate new argument order in call to
sys_wcstombs.
(get_user_groups): Ditto.
(get_user_local_groups): Ditto.
(get_priv_list): Call sys_wcstombs directly instead of lsa2str.
* uinfo.cc (cygheap_user::ontherange): Accomodate new argument order
in call to sys_wcstombs.
* winsup.h (sys_wcstombs): Change prototype to match new argument order.
Diffstat (limited to 'winsup/cygwin/miscfuncs.cc')
-rw-r--r-- | winsup/cygwin/miscfuncs.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index 26686bd2b..0f5804ed6 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -210,10 +210,18 @@ get_cp () return current_codepage == ansi_cp ? GetACP() : GetOEMCP(); } +/* tlen is always treated as the maximum buffer size, including the '\0' + character. sys_wcstombs will always return a 0-terminated result, no + matter what. */ int __stdcall -sys_wcstombs (char *tgt, const WCHAR *src, int len) +sys_wcstombs (char *tgt, int tlen, const WCHAR *src, int slen) { - return WideCharToMultiByte (get_cp (), 0, src, -1, tgt, len, NULL, NULL); + int ret; + + ret = WideCharToMultiByte (get_cp (), 0, src, slen, tgt, tlen, NULL, NULL); + if (ret) + tgt[ret < tlen ? ret : tlen - 1] = '\0'; + return ret; } int __stdcall |