U_CAPI UFILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */ u_finit(FILE *f, const char *locale, const char *codepage) { return finit_owner(f, locale, codepage, FALSE); }
U_CAPI UFILE* U_EXPORT2 u_fopen_u(const UChar *filename, const char *perm, const char *locale, const char *codepage) { UFILE *result; char buffer[256]; u_austrcpy(buffer, filename); result = u_fopen(buffer, perm, locale, codepage); #if U_PLATFORM_USES_ONLY_WIN32_API /* Try Windows API _wfopen if the above fails. */ if (!result) { FILE *systemFile = _wfopen(filename, (UChar*)perm); if (systemFile) { result = finit_owner(systemFile, locale, codepage, TRUE); } if (!result) { /* Something bad happened. Maybe the converter couldn't be opened. */ fclose(systemFile); } } #endif return result; /* not a file leak */ }
U_CAPI UFILE* U_EXPORT2 u_fadopt(FILE *f, const char *locale, const char *codepage) { return finit_owner(f, locale, codepage, TRUE); }
U_CAPI UFILE* U_EXPORT2 u_fopen_u(const UChar *filename, const char *perm, const char *locale, const char *codepage) { UFILE *result; char buffer[256]; u_austrcpy(buffer, filename); result = u_fopen(buffer, perm, locale, codepage); #if U_PLATFORM_USES_ONLY_WIN32_API /* Try Windows API _wfopen if the above fails. */ if (!result) { // TODO: test this code path, including wperm. wchar_t wperm[40] = {}; size_t retVal; mbstowcs_s(&retVal, wperm, perm, _TRUNCATE); FILE *systemFile = _wfopen((const wchar_t *)filename, wperm); if (systemFile) { result = finit_owner(systemFile, locale, codepage, TRUE); } if (!result) { /* Something bad happened. Maybe the converter couldn't be opened. */ fclose(systemFile); } } #endif return result; /* not a file leak */ }
U_CAPI UFILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */ u_fopen(const char *filename, const char *perm, const char *locale, const char *codepage) { UFILE *result; FILE *systemFile = fopen(filename, perm); if(systemFile == 0) { return 0; } result = finit_owner(systemFile, locale, codepage, TRUE); if (!result) { /* Something bad happened. Maybe the converter couldn't be opened. */ fclose(systemFile); } return result; }