scuffed-code/icu4c/source/samples/cal/uprint.c

76 lines
1.8 KiB
C
Raw Normal View History

1999-08-16 21:50:52 +00:00
/*
**********************************************************************
* Copyright (C) 1998-2001, International Business Machines Corporation
* and others. All Rights Reserved.
**********************************************************************
1999-08-16 21:50:52 +00:00
*
* File date.c
*
* Modification History:
*
2002-04-02 02:55:31 +00:00
* Date Name Description
* 06/14/99 stephen Creation.
1999-08-16 21:50:52 +00:00
*******************************************************************************
*/
#include "uprint.h"
#include "unicode/ucnv.h"
#include "unicode/ustring.h"
1999-08-16 21:50:52 +00:00
#define BUF_SIZE 128
/* Print a ustring to the specified FILE* in the default codepage */
void
uprint(const UChar *s,
2002-04-02 02:55:31 +00:00
FILE *f,
UErrorCode *status)
1999-08-16 21:50:52 +00:00
{
/* converter */
UConverter *converter;
char buf [BUF_SIZE];
int32_t sourceLen;
const UChar *mySource;
const UChar *mySourceEnd;
char *myTarget;
int32_t arraySize;
if(s == 0) return;
/* set up the conversion parameters */
sourceLen = u_strlen(s);
2002-04-02 02:55:31 +00:00
mySource = s;
1999-08-16 21:50:52 +00:00
mySourceEnd = mySource + sourceLen;
2002-04-02 02:55:31 +00:00
myTarget = buf;
1999-08-16 21:50:52 +00:00
arraySize = BUF_SIZE;
/* open a default converter */
converter = ucnv_open(0, status);
/* if we failed, clean up and exit */
if(U_FAILURE(*status)) goto finish;
1999-08-16 21:50:52 +00:00
/* perform the conversion */
do {
2002-04-02 02:55:31 +00:00
/* reset the error code */
*status = U_ZERO_ERROR;
1999-08-16 21:50:52 +00:00
2002-04-02 02:55:31 +00:00
/* perform the conversion */
ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
&mySource, mySourceEnd, NULL,
TRUE, status);
1999-08-16 21:50:52 +00:00
2002-04-02 02:55:31 +00:00
/* Write the converted data to the FILE* */
fwrite(buf, sizeof(char), myTarget - buf, f);
1999-08-16 21:50:52 +00:00
2002-04-02 02:55:31 +00:00
/* update the conversion parameters*/
myTarget = buf;
arraySize = BUF_SIZE;
1999-08-16 21:50:52 +00:00
}
while(*status == U_BUFFER_OVERFLOW_ERROR);
1999-08-16 21:50:52 +00:00
finish:
/* close the converter */
ucnv_close(converter);
}