16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org********************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 1998-2001, International Business Machines Corporation 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org********************************************************************** 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File date.c 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History: 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Date Name Description 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 06/14/99 stephen Creation. 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "uprint.h" 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ucnv.h" 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ustring.h" 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define BUF_SIZE 128 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* Print a ustring to the specified FILE* in the default codepage */ 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguprint(const UChar *s, 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FILE *f, 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status) 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* converter */ 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverter *converter; 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char buf [BUF_SIZE]; 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t sourceLen; 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *mySource; 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *mySourceEnd; 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char *myTarget; 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t arraySize; 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(s == 0) return; 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* set up the conversion parameters */ 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org sourceLen = u_strlen(s); 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org mySource = s; 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org mySourceEnd = mySource + sourceLen; 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org myTarget = buf; 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org arraySize = BUF_SIZE; 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* open a default converter */ 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org converter = ucnv_open(0, status); 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* if we failed, clean up and exit */ 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(*status)) goto finish; 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* perform the conversion */ 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org do { 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* reset the error code */ 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *status = U_ZERO_ERROR; 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* perform the conversion */ 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize, 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org &mySource, mySourceEnd, NULL, 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TRUE, status); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* Write the converted data to the FILE* */ 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fwrite(buf, sizeof(char), myTarget - buf, f); 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* update the conversion parameters*/ 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org myTarget = buf; 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org arraySize = BUF_SIZE; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org while(*status == U_BUFFER_OVERFLOW_ERROR); 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org finish: 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* close the converter */ 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ucnv_close(converter); 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 77