16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org****************************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 1997-2011, International Business Machines 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org****************************************************************************** 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File FILESTRM.C 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @author Glenn Marcy 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History: 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Date Name Description 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 5/8/98 gm Created 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 03/02/99 stephen Reordered params in ungetc to match stdio 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Added wopen 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 3/29/99 helena Merged Stephen and Bertrand's changes. 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org****************************************************************************** 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "filestrm.h" 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "cmemory.h" 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdio.h> 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI FileStream* U_EXPORT2 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_open(const char* filename, const char* mode) 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(filename != NULL && *filename != 0 && mode != NULL && *mode != 0) { 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FILE *file = fopen(filename, mode); 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (FileStream*)file; 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return NULL; 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI FileStream* U_EXPORT2 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_wopen(const wchar_t* filename, const wchar_t* mode) 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // TBD: _wfopen is believed to be MS-specific? 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_PLATFORM_USES_ONLY_WIN32_API 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FILE* result = _wfopen(filename, mode); 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (FileStream*)result; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#else 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org size_t fnMbsSize, mdMbsSize; 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char *fn, *md; 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FILE *result; 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // convert from wchar_t to char 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fnMbsSize = wcstombs(NULL, filename, ((size_t)-1) >> 1); 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fn = (char*)uprv_malloc(fnMbsSize+2); 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org wcstombs(fn, filename, fnMbsSize); 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fn[fnMbsSize] = 0; 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org mdMbsSize = wcstombs(NULL, mode, ((size_t)-1) >> 1); 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org md = (char*)uprv_malloc(mdMbsSize+2); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org wcstombs(md, mode, mdMbsSize); 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org md[mdMbsSize] = 0; 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org result = fopen(fn, md); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprv_free(fn); 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprv_free(md); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (FileStream*)result; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI void U_EXPORT2 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_close(FileStream* fileStream) 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fileStream != 0) 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fclose((FILE*)fileStream); 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI UBool U_EXPORT2 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_file_exists(const char* filename) 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FILE* temp = fopen(filename, "r"); 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (temp) { 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fclose(temp); 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return TRUE; 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*static const int32_t kEOF; 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst int32_t FileStream::kEOF = EOF;*/ 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI FileStream* 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_tmpfile() 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FILE* file = tmpfile(); 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (FileStream*)file; 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_read(FileStream* fileStream, void* addr, int32_t len) 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fread(addr, 1, len, (FILE*)fileStream); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_write(FileStream* fileStream, const void* addr, int32_t len) 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fwrite(addr, 1, len, (FILE*)fileStream); 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI void U_EXPORT2 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_rewind(FileStream* fileStream) 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org rewind((FILE*)fileStream); 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_putc(FileStream* fileStream, int32_t ch) 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t c = fputc(ch, (FILE*)fileStream); 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return c; 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int U_EXPORT2 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_getc(FileStream* fileStream) 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int c = fgetc((FILE*)fileStream); 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return c; 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_ungetc(int32_t ch, FileStream* fileStream) 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t c = ungetc(ch, (FILE*)fileStream); 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return c; 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_peek(FileStream* fileStream) 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t c = fgetc((FILE*)fileStream); 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return ungetc(c, (FILE*)fileStream); 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI char* U_EXPORT2 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_readLine(FileStream* fileStream, char* buffer, int32_t length) 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fgets(buffer, length, (FILE*)fileStream); 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_writeLine(FileStream* fileStream, const char* buffer) 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fputs(buffer, (FILE*)fileStream); 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_size(FileStream* fileStream) 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t savedPos = ftell((FILE*)fileStream); 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t size = 0; 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /*Changes by Bertrand A. D. doesn't affect the current position 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org goes to the end of the file before ftell*/ 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fseek((FILE*)fileStream, 0, SEEK_END); 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org size = (int32_t)ftell((FILE*)fileStream); 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fseek((FILE*)fileStream, savedPos, SEEK_SET); 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return size; 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int U_EXPORT2 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_eof(FileStream* fileStream) 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return feof((FILE*)fileStream); 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Warning 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org This function may not work consistently on all platforms 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (e.g. HP-UX, FreeBSD and MacOSX don't return an error when 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org putc is used on a file opened as readonly) 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int U_EXPORT2 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_error(FileStream* fileStream) 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (fileStream == 0 || ferror((FILE*)fileStream)); 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* This function doesn't work. */ 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* force the stream to set its error flag*/ 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*U_CAPI void U_EXPORT2 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_setError(FileStream* fileStream) 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fseek((FILE*)fileStream, 99999, SEEK_SET); 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI FileStream* U_EXPORT2 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_stdin(void) 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (FileStream*)stdin; 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI FileStream* U_EXPORT2 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_stdout(void) 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (FileStream*)stdout; 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI FileStream* U_EXPORT2 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_stderr(void) 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (FileStream*)stderr; 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI UBool U_EXPORT2 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgT_FileStream_remove(const char* fileName){ 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (remove(fileName) == 0); 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 226