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#include "unicode/ucnv.h"
18#include "unicode/ustring.h"
19
20#define BUF_SIZE 128
21
22/* Print a ustring to the specified FILE* in the default codepage */
23void
24uprint(const UChar *s,
25       FILE *f,
26       UErrorCode *status)
27{
28  /* converter */
29  UConverter *converter;
30  char buf [BUF_SIZE];
31  int32_t sourceLen;
32  const UChar *mySource;
33  const UChar *mySourceEnd;
34  char *myTarget;
35  int32_t arraySize;
36
37  if(s == 0) return;
38
39  /* set up the conversion parameters */
40  sourceLen    = u_strlen(s);
41  mySource     = s;
42  mySourceEnd  = mySource + sourceLen;
43  myTarget     = buf;
44  arraySize    = BUF_SIZE;
45
46  /* open a default converter */
47  converter = ucnv_open(0, status);
48
49  /* if we failed, clean up and exit */
50  if(U_FAILURE(*status)) goto finish;
51
52  /* perform the conversion */
53  do {
54    /* reset the error code */
55    *status = U_ZERO_ERROR;
56
57    /* perform the conversion */
58    ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
59             &mySource, mySourceEnd, NULL,
60             TRUE, status);
61
62    /* Write the converted data to the FILE* */
63    fwrite(buf, sizeof(char), myTarget - buf, f);
64
65    /* update the conversion parameters*/
66    myTarget     = buf;
67    arraySize    = BUF_SIZE;
68  }
69  while(*status == U_BUFFER_OVERFLOW_ERROR);
70
71 finish:
72
73  /* close the converter */
74  ucnv_close(converter);
75}
76