From cec9d0501ccdf37cb82e398df6ec4e5bd4e1ac01 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Tue, 14 Feb 2006 21:03:15 +0000 Subject: Changed the unicode functions git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@181 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/include/pj/unicode.h | 23 +++++++++++++++++------ pjlib/src/pj/file_access_win32.c | 31 +++++++++++++++++-------------- pjlib/src/pj/file_io_win32.c | 4 ++-- 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/pjlib/include/pj/unicode.h b/pjlib/include/pj/unicode.h index 362c225d..e70f5fb5 100644 --- a/pjlib/include/pj/unicode.h +++ b/pjlib/include/pj/unicode.h @@ -21,6 +21,10 @@ #include + +PJ_BEGIN_DECL + + /** * @file unicode.h * @brief Provides Unicode conversion for Unicode OSes @@ -56,20 +60,27 @@ PJ_DECL(char*) pj_unicode_to_ansi(const wchar_t *wstr, pj_size_t len, #if defined(PJ_NATIVE_STRING_IS_UNICODE) && PJ_NATIVE_STRING_IS_UNICODE!=0 -# define PJ_DECL_UNICODE_TEMP_BUF(buf,size) wchar_t buf[size] -# define PJ_STRING_TO_NATIVE(s,buf) pj_ansi_to_unicode( \ +# define PJ_DECL_UNICODE_TEMP_BUF(buf,size) wchar_t buf[size]; +# define PJ_STRING_TO_NATIVE(s,buf,max) pj_ansi_to_unicode( \ s, strlen(s), \ - buf, PJ_ARRAY_SIZE(buf)) -# define PJ_TEXT(s) _TEXT(s) + buf, max) +# define PJ_DECL_ANSI_TEMP_BUF(buf,size) char buf[size]; +# define PJ_NATIVE_TO_STRING(cs,buf,max) pj_unicode_to_ansi( \ + cs, wcslen(cs), \ + buf, max) #else # define PJ_DECL_UNICODE_TEMP_BUF(var,size) -# define PJ_STRING_TO_NATIVE(s, buf) (s) -# define PJ_TEXT(s) (s) +# define PJ_STRING_TO_NATIVE(s,buf,max) ((char*)s) +# define PJ_DECL_ANSI_TEMP_BUF(buf,size) +# define PJ_NATIVE_TO_STRING(cs,buf,max) ((char*)(const char*)cs) #endif +PJ_END_DECL + + #endif /* __PJ_UNICODE_H__ */ diff --git a/pjlib/src/pj/file_access_win32.c b/pjlib/src/pj/file_access_win32.c index bec4904d..31b32378 100644 --- a/pjlib/src/pj/file_access_win32.c +++ b/pjlib/src/pj/file_access_win32.c @@ -30,12 +30,13 @@ */ PJ_DEF(pj_bool_t) pj_file_exists(const char *filename) { + PJ_DECL_UNICODE_TEMP_BUF(wfilename,256) HANDLE hFile; - PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); PJ_ASSERT_RETURN(filename != NULL, 0); - hFile = CreateFile(PJ_STRING_TO_NATIVE(filename,wfilename), READ_CONTROL, + hFile = CreateFile(PJ_STRING_TO_NATIVE(filename,wfilename,sizeof(wfilename)), + READ_CONTROL, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) @@ -51,14 +52,15 @@ PJ_DEF(pj_bool_t) pj_file_exists(const char *filename) */ PJ_DEF(pj_off_t) pj_file_size(const char *filename) { + PJ_DECL_UNICODE_TEMP_BUF(wfilename,256) HANDLE hFile; DWORD sizeLo, sizeHi; pj_off_t size; - PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); PJ_ASSERT_RETURN(filename != NULL, -1); - hFile = CreateFile(PJ_STRING_TO_NATIVE(filename, wfilename), READ_CONTROL, + hFile = CreateFile(PJ_STRING_TO_NATIVE(filename, wfilename,sizeof(wfilename)), + READ_CONTROL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) @@ -86,11 +88,11 @@ PJ_DEF(pj_off_t) pj_file_size(const char *filename) */ PJ_DEF(pj_status_t) pj_file_delete(const char *filename) { - PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); + PJ_DECL_UNICODE_TEMP_BUF(wfilename,256) PJ_ASSERT_RETURN(filename != NULL, PJ_EINVAL); - if (DeleteFile(PJ_STRING_TO_NATIVE(filename,wfilename)) == FALSE) + if (DeleteFile(PJ_STRING_TO_NATIVE(filename,wfilename,sizeof(wfilename))) == FALSE) return PJ_RETURN_OS_ERROR(GetLastError()); return PJ_SUCCESS; @@ -102,19 +104,19 @@ PJ_DEF(pj_status_t) pj_file_delete(const char *filename) */ PJ_DEF(pj_status_t) pj_file_move( const char *oldname, const char *newname) { + PJ_DECL_UNICODE_TEMP_BUF(woldname,256) + PJ_DECL_UNICODE_TEMP_BUF(wnewname,256) BOOL rc; - PJ_DECL_UNICODE_TEMP_BUF(woldname,256); - PJ_DECL_UNICODE_TEMP_BUF(wnewname,256); PJ_ASSERT_RETURN(oldname!=NULL && newname!=NULL, PJ_EINVAL); #if PJ_WIN32_WINNT >= 0x0400 - rc = MoveFileEx(PJ_STRING_TO_NATIVE(oldname,woldname), - PJ_STRING_TO_NATIVE(newname,wnewname), + rc = MoveFileEx(PJ_STRING_TO_NATIVE(oldname,woldname,sizeof(woldname)), + PJ_STRING_TO_NATIVE(newname,wnewname,sizeof(wnewname)), MOVEFILE_COPY_ALLOWED|MOVEFILE_REPLACE_EXISTING); #else - rc = MoveFile(PJ_STRING_TO_NATIVE(oldname, woldname), - PJ_STRING_TO_NATIVE(newname, wnewname)); + rc = MoveFile(PJ_STRING_TO_NATIVE(oldname,woldname,sizeof(woldname)), + PJ_STRING_TO_NATIVE(newname,wnewname,sizeof(wnewname))); #endif if (!rc) @@ -159,14 +161,15 @@ static pj_status_t file_time_to_time_val(const FILETIME *file_time, */ PJ_DEF(pj_status_t) pj_file_getstat(const char *filename, pj_file_stat *stat) { + PJ_DECL_UNICODE_TEMP_BUF(wfilename,256) HANDLE hFile; DWORD sizeLo, sizeHi; FILETIME creationTime, accessTime, writeTime; - PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); PJ_ASSERT_RETURN(filename!=NULL && stat!=NULL, PJ_EINVAL); - hFile = CreateFile(PJ_STRING_TO_NATIVE(filename,wfilename), READ_CONTROL, + hFile = CreateFile(PJ_STRING_TO_NATIVE(filename,wfilename,sizeof(wfilename)), + READ_CONTROL, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) diff --git a/pjlib/src/pj/file_io_win32.c b/pjlib/src/pj/file_io_win32.c index e663e527..12f15ea3 100644 --- a/pjlib/src/pj/file_io_win32.c +++ b/pjlib/src/pj/file_io_win32.c @@ -44,7 +44,7 @@ PJ_DEF(pj_status_t) pj_file_open( pj_pool_t *pool, unsigned flags, pj_oshandle_t *fd) { - PJ_DECL_UNICODE_TEMP_BUF(wpathname,256); + PJ_DECL_UNICODE_TEMP_BUF(wpathname,256) HANDLE hFile; DWORD dwDesiredAccess = 0; DWORD dwShareMode = 0; @@ -78,7 +78,7 @@ PJ_DEF(pj_status_t) pj_file_open( pj_pool_t *pool, dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL; - hFile = CreateFile(PJ_STRING_TO_NATIVE(pathname,wpathname), + hFile = CreateFile(PJ_STRING_TO_NATIVE(pathname,wpathname,sizeof(wpathname)), dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); if (hFile == INVALID_HANDLE_VALUE) { -- cgit v1.2.3