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