]>
Commit | Line | Data |
---|---|---|
b75a7d8f | 1 | /* |
f3c0d7a5 A |
2 | *********************************************************************** |
3 | * © 2016 and later: Unicode, Inc. and others. | |
4 | * License & terms of use: http://www.unicode.org/copyright.html#License | |
5 | *********************************************************************** | |
b75a7d8f A |
6 | ********************************************************************** |
7 | * Copyright (C) 1998-2001, International Business Machines Corporation | |
8 | * and others. All Rights Reserved. | |
9 | ********************************************************************** | |
10 | * | |
11 | * File date.c | |
12 | * | |
13 | * Modification History: | |
14 | * | |
15 | * Date Name Description | |
16 | * 06/14/99 stephen Creation. | |
17 | ******************************************************************************* | |
18 | */ | |
19 | ||
20 | #include "uprint.h" | |
21 | ||
22 | #include "unicode/ucnv.h" | |
23 | #include "unicode/ustring.h" | |
24 | ||
25 | #define BUF_SIZE 128 | |
26 | ||
27 | /* Print a ustring to the specified FILE* in the default codepage */ | |
28 | void | |
29 | uprint(const UChar *s, | |
30 | FILE *f, | |
31 | UErrorCode *status) | |
32 | { | |
33 | /* converter */ | |
34 | UConverter *converter; | |
35 | char buf [BUF_SIZE]; | |
36 | int32_t sourceLen; | |
37 | const UChar *mySource; | |
38 | const UChar *mySourceEnd; | |
39 | char *myTarget; | |
40 | int32_t arraySize; | |
41 | ||
42 | if(s == 0) return; | |
43 | ||
44 | /* set up the conversion parameters */ | |
45 | sourceLen = u_strlen(s); | |
46 | mySource = s; | |
47 | mySourceEnd = mySource + sourceLen; | |
48 | myTarget = buf; | |
49 | arraySize = BUF_SIZE; | |
50 | ||
51 | /* open a default converter */ | |
52 | converter = ucnv_open(0, status); | |
53 | ||
54 | /* if we failed, clean up and exit */ | |
55 | if(U_FAILURE(*status)) goto finish; | |
56 | ||
57 | /* perform the conversion */ | |
58 | do { | |
59 | /* reset the error code */ | |
60 | *status = U_ZERO_ERROR; | |
61 | ||
62 | /* perform the conversion */ | |
63 | ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize, | |
64 | &mySource, mySourceEnd, NULL, | |
65 | TRUE, status); | |
66 | ||
67 | /* Write the converted data to the FILE* */ | |
68 | fwrite(buf, sizeof(char), myTarget - buf, f); | |
69 | ||
70 | /* update the conversion parameters*/ | |
71 | myTarget = buf; | |
72 | arraySize = BUF_SIZE; | |
73 | } | |
74 | while(*status == U_BUFFER_OVERFLOW_ERROR); | |
75 | ||
76 | finish: | |
77 | ||
78 | /* close the converter */ | |
79 | ucnv_close(converter); | |
80 | } |