Viewing file: uprint.c (1.95 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* *********************************************************************** * © 2016 and later: Unicode, Inc. and others. * License & terms of use: http://www.unicode.org/copyright.html#License *********************************************************************** ********************************************************************** * Copyright (C) 1998-2001, International Business Machines Corporation * and others. All Rights Reserved. ********************************************************************** * * File date.c * * Modification History: * * Date Name Description * 06/14/99 stephen Creation. ******************************************************************************* */
#include "uprint.h"
#include "unicode/ucnv.h" #include "unicode/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(U_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_BUFFER_OVERFLOW_ERROR);
finish: /* close the converter */ ucnv_close(converter); }
|