Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2006-02-07 18:49:08 +0300
committerCorinna Vinschen <corinna@vinschen.de>2006-02-07 18:49:08 +0300
commit03a49a00ab2239e769c61592ea946d151ea95114 (patch)
treef7bad6c6fd475c542d11a6573b22395a23a287d4 /winsup/cygwin/miscfuncs.cc
parent3cb155a97f98f2f7e9e68b6c536b9bb3777e33d8 (diff)
* 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.cc12
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