diff options
Diffstat (limited to 'ace/OS_NS_stdio.inl')
-rw-r--r-- | ace/OS_NS_stdio.inl | 102 |
1 files changed, 43 insertions, 59 deletions
diff --git a/ace/OS_NS_stdio.inl b/ace/OS_NS_stdio.inl index d3f2c08c99e..0f4a460723b 100644 --- a/ace/OS_NS_stdio.inl +++ b/ace/OS_NS_stdio.inl @@ -589,7 +589,6 @@ ACE_OS::cuserid (char *user, size_t maxlen) #endif /* VXWORKS */ } -#if defined (ACE_HAS_WCHAR) ACE_INLINE wchar_t * ACE_OS::cuserid (wchar_t *user, size_t maxlen) { @@ -600,14 +599,14 @@ ACE_OS::cuserid (wchar_t *user, size_t maxlen) else return user; # else /* ACE_WIN32 */ - char *char_user; + char *char_user = 0; wchar_t *result = 0; ACE_NEW_RETURN (char_user, char[maxlen + 1], 0); if (ACE_OS::cuserid (char_user, maxlen)) { - ACE_OS::strcpy (user, ACE_Ascii_To_Wide (char_user).wchar_rep ()); + ACE_OS::string_copy (user, char_user, maxlen + 1); result = user; } @@ -616,7 +615,6 @@ ACE_OS::cuserid (wchar_t *user, size_t maxlen) return result; # endif /* ACE_WIN32 */ } -#endif /* ACE_HAS_WCHAR */ #endif /* ACE_LACKS_CUSERID */ ACE_INLINE int @@ -631,9 +629,9 @@ ACE_OS::fdopen (ACE_HANDLE handle, const ACE_TCHAR *mode) { ACE_OS_TRACE ("ACE_OS::fdopen"); # if defined (ACE_HAS_WINCE) - ACE_OSCALL_RETURN (::_wfdopen (handle, ACE_TEXT_ALWAYS_WCHAR (mode)), - FILE*, - 0); + ACE_OSCALL_RETURN (::_wfdopen (handle, ACE_TEXT_TO_WCHAR_IN (mode)), + FILE*, + 0); # elif defined (ACE_WIN32) // kernel file handle -> FILE* conversion... // Options: _O_APPEND, _O_RDONLY and _O_TEXT are lost @@ -678,7 +676,7 @@ ACE_OS::fdopen (ACE_HANDLE handle, const ACE_TCHAR *mode) ACE_NOTSUP_RETURN (0); # else ACE_OSCALL_RETURN - (::fdopen (handle, ACE_TEXT_ALWAYS_CHAR (mode)), FILE *, 0); + (::fdopen (handle, ACE_TEXT_TO_CHAR_IN (mode)), FILE *, 0); # endif /* ACE_HAS_WINCE */ } @@ -716,14 +714,19 @@ ACE_OS::fgets (char *buf, int size, FILE *fp) ACE_OSCALL_RETURN (ACE_STD_NAMESPACE::fgets (buf, size, fp), char *, 0); } -#if defined (ACE_HAS_WCHAR) && !defined(ACE_LACKS_FGETWS) ACE_INLINE wchar_t * ACE_OS::fgets (wchar_t *buf, int size, FILE *fp) { +#if !defined(ACE_LACKS_FGETWS) ACE_OS_TRACE ("ACE_OS::fgets"); ACE_OSCALL_RETURN (ACE_STD_NAMESPACE::fgetws (buf, size, fp), wchar_t *, 0); +#else + ACE_UNUSED_ARG( buf ); + ACE_UNUSED_ARG( size ); + ACE_UNUSED_ARG( fp ); + ACE_NOTSUP_RETURN (0); +#endif } -#endif /* ACE_HAS_WCHAR && !ACE_LACKS_FGETWS */ #if !(defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)) // Win32 PC implementation of fopen () is in OS_NS_stdio.cpp. @@ -732,25 +735,23 @@ ACE_OS::fopen (const char *filename, const ACE_TCHAR *mode) { ACE_OS_TRACE ("ACE_OS::fopen"); ACE_OSCALL_RETURN - (::fopen (filename, ACE_TEXT_ALWAYS_CHAR (mode)), FILE *, 0); + (::fopen (filename, ACE_TEXT_TO_CHAR_IN (mode)), FILE *, 0); } -#if defined (ACE_HAS_WCHAR) ACE_INLINE FILE * ACE_OS::fopen (const wchar_t *filename, const ACE_TCHAR *mode) { ACE_OS_TRACE ("ACE_OS::fopen"); #if defined (ACE_HAS_WINCE) ACE_OSCALL_RETURN - (::_wfopen (filename, ACE_TEXT_ALWAYS_WCHAR (mode)), FILE *, 0); + (::_wfopen (filename, ACE_TEXT_TO_WCHAR_IN (mode)), FILE *, 0); #else // Non-Windows doesn't use wchar_t file systems. - ACE_Wide_To_Ascii n_filename (filename); ACE_OSCALL_RETURN - (::fopen (n_filename.char_rep (), ACE_TEXT_ALWAYS_CHAR (mode)), FILE*, 0); + (::fopen (ACE_TEXT_TO_CHAR_IN (filename), + ACE_TEXT_TO_CHAR_IN (mode)), FILE*, 0); #endif /* ACE_HAS_WINCE */ } -#endif /* ACE_HAS_WCHAR */ #endif /* ACE_WIN32 */ @@ -761,14 +762,18 @@ ACE_OS::fputs (const char *s, FILE *stream) ACE_OSCALL_RETURN (ACE_STD_NAMESPACE::fputs (s, stream), int, -1); } -#if defined (ACE_HAS_WCHAR) && !defined(ACE_LACKS_FPUTWS) ACE_INLINE int ACE_OS::fputs (const wchar_t *s, FILE *stream) { +#if !defined(ACE_LACKS_FPUTWS) ACE_OS_TRACE ("ACE_OS::fputs"); ACE_OSCALL_RETURN (ACE_STD_NAMESPACE::fputws (s, stream), int, -1); +#else + ACE_UNUSED_ARG( s ); + ACE_UNUSED_ARG( stream ); + ACE_NOTSUP_RETURN (-1); +#endif } -#endif /* ACE_HAS_WCHAR && !ACE_LACKS_FPUTWS */ ACE_INLINE size_t ACE_OS::fread (void *ptr, size_t size, size_t nelems, FILE *fp) @@ -784,14 +789,14 @@ ACE_OS::freopen (const ACE_TCHAR *filename, const ACE_TCHAR *mode, FILE* stream) { ACE_OS_TRACE ("ACE_OS::freopen"); #if defined (ACE_WIN32) && (defined(ACE_USES_WCHAR) || defined(ACE_HAS_WINCE)) - ACE_OSCALL_RETURN (::_wfreopen (ACE_TEXT_ALWAYS_WCHAR (filename), - ACE_TEXT_ALWAYS_WCHAR (mode), - stream), - FILE *, 0); + ACE_OSCALL_RETURN (::_wfreopen (ACE_TEXT_TO_WCHAR_IN (filename), + ACE_TEXT_TO_WCHAR_IN (mode), + stream), + FILE *, 0); #else ACE_OSCALL_RETURN - (ACE_STD_NAMESPACE::freopen (ACE_TEXT_ALWAYS_CHAR (filename), - ACE_TEXT_ALWAYS_CHAR (mode), + (ACE_STD_NAMESPACE::freopen (ACE_TEXT_TO_CHAR_IN (filename), + ACE_TEXT_TO_CHAR_IN (mode), stream), FILE *, 0); #endif /* ACE_WIN32 && ACE_USES_WCHAR */ @@ -856,7 +861,6 @@ ACE_OS::perror (const char *s) #endif /* ACE_HAS_WINCE */ } -#if defined (ACE_HAS_WCHAR) ACE_INLINE void ACE_OS::perror (const wchar_t *s) { @@ -867,11 +871,9 @@ ACE_OS::perror (const wchar_t *s) #elif defined (ACE_WIN32) ::_wperror (s); #else - ACE_Wide_To_Ascii n_s (s); - ::perror (n_s.char_rep ()); + ::perror (ACE_TEXT_TO_CHAR_IN (s)); #endif /* ACE_HAS_WINCE */ } -#endif /* ACE_HAS_WCHAR */ ACE_INLINE int ACE_OS::puts (const char *s) @@ -880,7 +882,6 @@ ACE_OS::puts (const char *s) ACE_OSCALL_RETURN (::puts (s), int, -1); } -#if defined (ACE_HAS_WCHAR) ACE_INLINE int ACE_OS::puts (const wchar_t *s) { @@ -889,11 +890,9 @@ ACE_OS::puts (const wchar_t *s) ACE_OSCALL_RETURN (::_putws (s), int, -1); #else /* ACE_WIN32 */ // There's no putws()... - ACE_Wide_To_Ascii n_s (s); - ACE_OSCALL_RETURN (::puts (n_s.char_rep ()), int, -1); + ACE_OSCALL_RETURN (::puts (ACE_TEXT_TO_CHAR_IN (s)), int, -1); #endif /* ACE_WIN32 */ } -#endif /* ACE_HAS_WCHAR */ ACE_INLINE int ACE_OS::rename (const char *old_name, @@ -908,8 +907,8 @@ ACE_OS::rename (const char *old_name, # elif defined (ACE_HAS_WINCE) // Win CE is always wide-char. ACE_UNUSED_ARG (flags); - if (0 != MoveFile (ACE_TEXT_CHAR_TO_TCHAR (old_name), - ACE_TEXT_CHAR_TO_TCHAR (new_name))) + if (0 != MoveFile (ACE_TEXT_TO_TCHAR_IN (old_name), + ACE_TEXT_TO_TCHAR_IN (new_name))) ACE_FAIL_RETURN (-1); return 0; # elif defined (ACE_WIN32) && defined (ACE_HAS_WINNT4) && (ACE_HAS_WINNT4 == 1) @@ -928,7 +927,6 @@ ACE_OS::rename (const char *old_name, # endif /* ACE_LACKS_RENAME */ } -#if defined (ACE_HAS_WCHAR) ACE_INLINE int ACE_OS::rename (const wchar_t *old_name, const wchar_t *new_name, @@ -958,12 +956,10 @@ ACE_OS::rename (const wchar_t *old_name, ACE_UNUSED_ARG (flags); ACE_OSCALL_RETURN (::_wrename (old_name, new_name), int, -1); # else /* ACE_LACKS_RENAME */ - ACE_Wide_To_Ascii nold_name (old_name); - ACE_Wide_To_Ascii nnew_name (new_name); - return ACE_OS::rename (nold_name.char_rep (), nnew_name.char_rep (), flags); + return ACE_OS::rename (ACE_TEXT_TO_CHAR_IN (old_name), + ACE_TEXT_TO_CHAR_IN (new_name), flags); # endif /* ACE_LACKS_RENAME */ } -#endif /* ACE_HAS_WCHAR */ ACE_INLINE void ACE_OS::rewind (FILE *fp) @@ -973,7 +969,7 @@ ACE_OS::rewind (FILE *fp) ::rewind (fp); #else // This isn't perfect since it doesn't reset EOF, but it's probably - // the closest we can get on WINCE. + // the closest we can get on WINCE. (void) fseek (fp, 0L, SEEK_SET); #endif /* ACE_HAS_WINCE */ } @@ -997,7 +993,6 @@ ACE_OS::tempnam (const char *dir, const char *pfx) #endif /* ACE_LACKS_TEMPNAM */ } -#if defined (ACE_HAS_WCHAR) ACE_INLINE wchar_t * ACE_OS::tempnam (const wchar_t *dir, const wchar_t *pfx) { @@ -1011,28 +1006,21 @@ ACE_OS::tempnam (const wchar_t *dir, const wchar_t *pfx) ACE_OSCALL_RETURN (::_wtempnam (const_cast <wchar_t*> (dir), const_cast <wchar_t*> (pfx)), wchar_t *, 0); # else ACE_OSCALL_RETURN (::_wtempnam (dir, pfx), wchar_t *, 0); -# endif /* __BORLANDC__ */ -#else /* ACE_LACKS_TEMPNAM */ +# endif // __BORLANDC__ +#else // ACE_LACKS_TEMPNAM // No native wide-char support; convert to narrow and call the char* variant. - char *ndir = ACE_Wide_To_Ascii (dir).char_rep (); - char *npfx = ACE_Wide_To_Ascii (pfx).char_rep (); - char *name = ACE_OS::tempnam (ndir, npfx); + char *name = ACE_OS::tempnam (ACE_TEXT_TO_CHAR_IN (dir), + ACE_TEXT_TO_CHAR_IN (pfx)); // ACE_OS::tempnam returns a pointer to a malloc()-allocated space. // Convert that string to wide-char and free() the original. - wchar_t *wname = 0; if (name != 0) { - size_t namelen = ACE_OS::strlen (name) + 1; - wname = reinterpret_cast<wchar_t *> - (ACE_OS::malloc (namelen * sizeof (wchar_t))); - if (wname != 0) - ACE_OS::strcpy (wname, ACE_Ascii_To_Wide (name).wchar_rep ()); - ACE_OS::free (name); + ::free( name ); + return ACE_TEXT_TO_MALLOC_WCHAR_OUT( name ); } - return wname; + return 0; #endif /* ACE_LACKS_TEMPNAM */ } -#endif /* ACE_HAS_WCHAR */ ACE_INLINE int ACE_OS::vsprintf (char *buffer, const char *format, va_list argptr) @@ -1074,7 +1062,6 @@ ACE_OS::vsnprintf (char *buffer, size_t maxlen, const char *format, va_list ap) #endif /* ACE_HAS_SNPRINTF */ } -#if defined (ACE_HAS_WCHAR) ACE_INLINE int ACE_OS::vsprintf (wchar_t *buffer, const wchar_t *format, va_list argptr) { @@ -1103,9 +1090,7 @@ ACE_OS::vsprintf (wchar_t *buffer, const wchar_t *format, va_list argptr) # endif /* XPG5 || ACE_HAS_DINKUM_STL */ } -#endif /* ACE_HAS_WCHAR */ -#if defined (ACE_HAS_WCHAR) ACE_INLINE int ACE_OS::vsnprintf (wchar_t *buffer, size_t maxlen, const wchar_t *format, va_list ap) { @@ -1141,7 +1126,6 @@ ACE_OS::vsnprintf (wchar_t *buffer, size_t maxlen, const wchar_t *format, va_lis # endif /* platforms with a variant of vswprintf */ } -#endif /* ACE_HAS_WCHAR */ #if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) #if defined (ACE_WIN32) |