U_CAPI void U_EXPORT2 u_fflush(UFILE *file) { ufile_flush_translit(file); if (file->fFile) { fflush(file->fFile); } else if (file->str.fPos < file->str.fLimit) { *(file->str.fPos++) = 0; } /* TODO: flush input */ }
void ufile_close_translit(UFILE *f) { #if !UCONFIG_NO_TRANSLITERATION if((!f)||(!f->fTranslit)) return; #endif ufile_flush_translit(f); #if !UCONFIG_NO_TRANSLITERATION if(f->fTranslit->translit) utrans_close(f->fTranslit->translit); if(f->fTranslit->buffer) { uprv_free(f->fTranslit->buffer); } uprv_free(f->fTranslit); f->fTranslit = NULL; #endif }
U_CAPI UTransliterator* U_EXPORT2 u_fsettransliterator(UFILE *file, UFileDirection direction, UTransliterator *adopt, UErrorCode *status) { UTransliterator *old = NULL; if(file==NULL || U_FAILURE(*status)) { return adopt; } if(!file) { *status = U_ILLEGAL_ARGUMENT_ERROR; return adopt; } if(direction & U_READ) { /** TODO: implement */ *status = U_UNSUPPORTED_ERROR; return adopt; } if(adopt == NULL) /* they are clearing it */ { if(file->fTranslit != NULL) { /* TODO: Check side */ old = file->fTranslit->translit; uprv_free(file->fTranslit->buffer); file->fTranslit->buffer=NULL; uprv_free(file->fTranslit); file->fTranslit=NULL; } } else { if(file->fTranslit == NULL) { file->fTranslit = (UFILETranslitBuffer*) uprv_malloc(sizeof(UFILETranslitBuffer)); if(!file->fTranslit) { *status = U_MEMORY_ALLOCATION_ERROR; return adopt; } file->fTranslit->capacity = 0; file->fTranslit->length = 0; file->fTranslit->pos = 0; file->fTranslit->buffer = NULL; } else { old = file->fTranslit->translit; ufile_flush_translit(file); } file->fTranslit->translit = adopt; } return old; }