static void KBuffer_convertCharset(KonohaContext *kctx, KBuffer* wb, const char *targetCharset, const char *sourceCharset, const char *sourceBuf, size_t sourceSize, KTraceInfo *trace) { uintptr_t conv = I18NAPI iconv_open_i(kctx, targetCharset, sourceCharset, trace); if(conv != ICONV_NULL) { KLIB KBuffer_iconv(kctx, wb, conv, sourceBuf, sourceSize, trace); I18NAPI iconv_close_i(kctx, conv); } }
static void kDir_close(KonohaContext *kctx, kDir *dir) { if(dir->dirp != NULL) { closedir(dir->dirp); dir->dirp = NULL; } if(dir->readerIconv != ICONV_NULL) { PLATAPI iconv_close_i(kctx, dir->readerIconv); dir->readerIconv = ICONV_NULL; } }
static void kFile_close(KonohaContext *kctx, kFile *file, KTraceInfo *trace) { int ret = 0; DBG_ASSERT(file->fp != NULL); if(!(file->fp == stdin || file->fp == stdout || file->fp == stderr)) { ret = fclose(file->fp); } if(ret != 0) { KTraceErrorPoint(trace, SoftwareFault|SystemFault, "fclose", LogErrno); } file->fp = NULL; if(file->readerIconv != ICONV_NULL) { I18NAPI iconv_close_i(kctx, file->readerIconv); file->readerIconv = ICONV_NULL; } if(file->writerIconv != ICONV_NULL) { I18NAPI iconv_close_i(kctx, file->writerIconv); file->writerIconv = ICONV_NULL; } }