]> git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSWindows/WinServices.cpp
mDNSResponder-108.tar.gz
[apple/mdnsresponder.git] / mDNSWindows / WinServices.cpp
1 /*
2 * Copyright (c) 1997-2004 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22
23 Change History (most recent first):
24
25 $Log: WinServices.cpp,v $
26 Revision 1.1 2004/06/18 05:23:33 rpantos
27 First checked in
28
29
30 */
31
32 #include "WinServices.h"
33
34
35 //===========================================================================================================================
36 // UTF8StringToStringObject
37 //===========================================================================================================================
38
39 OSStatus UTF8StringToStringObject( const char *inUTF8, CString &inObject )
40 {
41 OSStatus err;
42 int n;
43 BSTR unicode;
44
45 unicode = NULL;
46
47 n = MultiByteToWideChar( CP_UTF8, 0, inUTF8, -1, NULL, 0 );
48 if( n > 0 )
49 {
50 unicode = (BSTR) malloc( (size_t)( n * sizeof( wchar_t ) ) );
51 if( !unicode )
52 {
53 err = ERROR_INSUFFICIENT_BUFFER;
54 goto exit;
55 }
56
57 n = MultiByteToWideChar( CP_UTF8, 0, inUTF8, -1, unicode, n );
58 try
59 {
60 inObject = unicode;
61 }
62 catch( ... )
63 {
64 err = ERROR_NO_UNICODE_TRANSLATION;
65 goto exit;
66 }
67 }
68 else
69 {
70 inObject = "";
71 }
72 err = ERROR_SUCCESS;
73
74 exit:
75 if( unicode )
76 {
77 free( unicode );
78 }
79 return( err );
80 }