1 /* -*- Mode: C; tab-width: 4 -*-
3 * Copyright (c) 1997-2004 Apple Computer, Inc. All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #include "WinServices.h"
19 #include <DebugServices.h>
22 //===========================================================================================================================
23 // UTF8StringToStringObject
24 //===========================================================================================================================
26 OSStatus
UTF8StringToStringObject( const char *inUTF8
, CString
&inObject
)
34 n
= MultiByteToWideChar( CP_UTF8
, 0, inUTF8
, -1, NULL
, 0 );
37 unicode
= (BSTR
) malloc( (size_t)( n
* sizeof( wchar_t ) ) );
40 err
= ERROR_INSUFFICIENT_BUFFER
;
44 n
= MultiByteToWideChar( CP_UTF8
, 0, inUTF8
, -1, unicode
, n
);
51 err
= ERROR_NO_UNICODE_TRANSLATION
;
70 //===========================================================================================================================
71 // UTF8StringToStringObject
72 //===========================================================================================================================
75 StringObjectToUTF8String( CString
&inObject
, char* outUTF8
, size_t outUTF8Len
)
77 OSStatus err
= kNoErr
;
79 memset( outUTF8
, 0, outUTF8Len
);
81 if ( inObject
.GetLength() > 0 )
85 size
= (size_t) WideCharToMultiByte( CP_UTF8
, 0, inObject
.GetBuffer(), inObject
.GetLength(), outUTF8
, (int) outUTF8Len
, NULL
, NULL
);
86 err
= translate_errno( size
!= 0, GetLastError(), kUnknownErr
);
87 require_noerr( err
, exit
);