b942cae860
X-SVN-Rev: 18
82 lines
2.2 KiB
C
82 lines
2.2 KiB
C
/*
|
|
*******************************************************************************
|
|
* *
|
|
* COPYRIGHT: *
|
|
* (C) Copyright International Business Machines Corporation, 1998, 1999 *
|
|
* Licensed Material - Program-Property of IBM - All Rights Reserved. *
|
|
* US Government Users Restricted Rights - Use, duplication, or disclosure *
|
|
* restricted by GSA ADP Schedule Contract with IBM Corp. *
|
|
* *
|
|
*******************************************************************************
|
|
*
|
|
* File date.c
|
|
*
|
|
* Modification History:
|
|
*
|
|
* Date Name Description
|
|
* 06/14/99 stephen Creation.
|
|
*******************************************************************************
|
|
*/
|
|
|
|
#include "uprint.h"
|
|
|
|
#include "ucnv.h"
|
|
#include "ustring.h"
|
|
|
|
#define BUF_SIZE 128
|
|
|
|
/* Print a ustring to the specified FILE* in the default codepage */
|
|
void
|
|
uprint(const UChar *s,
|
|
FILE *f,
|
|
UErrorCode *status)
|
|
{
|
|
/* 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);
|
|
mySource = s;
|
|
mySourceEnd = mySource + sourceLen;
|
|
myTarget = buf;
|
|
arraySize = BUF_SIZE;
|
|
|
|
/* open a default converter */
|
|
converter = ucnv_open(0, status);
|
|
|
|
/* if we failed, clean up and exit */
|
|
if(FAILURE(*status)) goto finish;
|
|
|
|
/* perform the conversion */
|
|
do {
|
|
/* reset the error code */
|
|
*status = U_ZERO_ERROR;
|
|
|
|
/* perform the conversion */
|
|
ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
|
|
&mySource, mySourceEnd, NULL,
|
|
TRUE, status);
|
|
|
|
/* Write the converted data to the FILE* */
|
|
fwrite(buf, sizeof(char), myTarget - buf, f);
|
|
|
|
/* update the conversion parameters*/
|
|
myTarget = buf;
|
|
arraySize = BUF_SIZE;
|
|
}
|
|
while(*status == U_INDEX_OUTOFBOUNDS_ERROR);
|
|
|
|
finish:
|
|
|
|
/* close the converter */
|
|
ucnv_close(converter);
|
|
}
|