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