summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-02-14 21:03:15 +0000
committerBenny Prijono <bennylp@teluu.com>2006-02-14 21:03:15 +0000
commitcec9d0501ccdf37cb82e398df6ec4e5bd4e1ac01 (patch)
tree9b4a597308d873fdb95d888dc0cc377f2d6ef02f
parent651dcb6f4a4e36b5cb7b604a30c7107333fbebc4 (diff)
Changed the unicode functions
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@181 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjlib/include/pj/unicode.h23
-rw-r--r--pjlib/src/pj/file_access_win32.c31
-rw-r--r--pjlib/src/pj/file_io_win32.c4
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/types.h>
+
+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) {