]>
Commit | Line | Data |
---|---|---|
67c8f8a1 A |
1 | /* -*- Mode: C; tab-width: 4 -*- |
2 | * | |
7f0064bd | 3 | * Copyright (c) 1997-2004 Apple Computer, Inc. All rights reserved. |
8e92c31c | 4 | * |
67c8f8a1 A |
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 | |
8e92c31c | 8 | * |
67c8f8a1 | 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
8e92c31c | 10 | * |
67c8f8a1 A |
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 | |
8e92c31c | 15 | * limitations under the License. |
8e92c31c A |
16 | |
17 | Change History (most recent first): | |
18 | ||
7f0064bd | 19 | $Log: WinServices.cpp,v $ |
67c8f8a1 A |
20 | Revision 1.2 2006/08/14 23:25:20 cheshire |
21 | Re-licensed mDNSResponder daemon source code under Apache License, Version 2.0 | |
22 | ||
7f0064bd A |
23 | Revision 1.1 2004/06/18 05:23:33 rpantos |
24 | First checked in | |
8e92c31c | 25 | |
8e92c31c | 26 | |
7f0064bd | 27 | */ |
8e92c31c | 28 | |
7f0064bd | 29 | #include "WinServices.h" |
8e92c31c | 30 | |
8e92c31c A |
31 | |
32 | //=========================================================================================================================== | |
7f0064bd | 33 | // UTF8StringToStringObject |
8e92c31c A |
34 | //=========================================================================================================================== |
35 | ||
7f0064bd | 36 | OSStatus UTF8StringToStringObject( const char *inUTF8, CString &inObject ) |
8e92c31c | 37 | { |
7f0064bd A |
38 | OSStatus err; |
39 | int n; | |
40 | BSTR unicode; | |
8e92c31c | 41 | |
7f0064bd | 42 | unicode = NULL; |
8e92c31c | 43 | |
7f0064bd A |
44 | n = MultiByteToWideChar( CP_UTF8, 0, inUTF8, -1, NULL, 0 ); |
45 | if( n > 0 ) | |
46 | { | |
47 | unicode = (BSTR) malloc( (size_t)( n * sizeof( wchar_t ) ) ); | |
48 | if( !unicode ) | |
49 | { | |
50 | err = ERROR_INSUFFICIENT_BUFFER; | |
51 | goto exit; | |
52 | } | |
8e92c31c | 53 | |
7f0064bd A |
54 | n = MultiByteToWideChar( CP_UTF8, 0, inUTF8, -1, unicode, n ); |
55 | try | |
56 | { | |
57 | inObject = unicode; | |
58 | } | |
59 | catch( ... ) | |
60 | { | |
61 | err = ERROR_NO_UNICODE_TRANSLATION; | |
62 | goto exit; | |
63 | } | |
64 | } | |
65 | else | |
66 | { | |
67 | inObject = ""; | |
68 | } | |
69 | err = ERROR_SUCCESS; | |
70 | ||
71 | exit: | |
72 | if( unicode ) | |
73 | { | |
74 | free( unicode ); | |
75 | } | |
76 | return( err ); | |
77 | } |