1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Copyright (C) 1998-2001, International Business Machines Corporation 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* and others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* File date.c 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Modification History: 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Date Name Description 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 06/14/99 stephen Creation. 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "uprint.h" 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ucnv.h" 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ustring.h" 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define BUF_SIZE 128 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* Print a ustring to the specified FILE* in the default codepage */ 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruuprint(const UChar *s, 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FILE *f, 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode *status) 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* converter */ 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UConverter *converter; 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru char buf [BUF_SIZE]; 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t sourceLen; 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UChar *mySource; 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UChar *mySourceEnd; 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru char *myTarget; 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t arraySize; 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(s == 0) return; 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* set up the conversion parameters */ 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru sourceLen = u_strlen(s); 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mySource = s; 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mySourceEnd = mySource + sourceLen; 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru myTarget = buf; 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru arraySize = BUF_SIZE; 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* open a default converter */ 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru converter = ucnv_open(0, status); 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* if we failed, clean up and exit */ 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(U_FAILURE(*status)) goto finish; 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* perform the conversion */ 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru do { 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* reset the error code */ 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *status = U_ZERO_ERROR; 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* perform the conversion */ 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize, 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru &mySource, mySourceEnd, NULL, 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru TRUE, status); 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* Write the converted data to the FILE* */ 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fwrite(buf, sizeof(char), myTarget - buf, f); 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* update the conversion parameters*/ 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru myTarget = buf; 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru arraySize = BUF_SIZE; 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru while(*status == U_BUFFER_OVERFLOW_ERROR); 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru finish: 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* close the converter */ 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ucnv_close(converter); 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 76