/** * 打开文件 * @param file 打开文件名 * @param flag 打开方式 * @return 0:成功 -1:失败 enum { _OFM_READ = 0x0001, _OFM_READWRITE = 0x0002, _OFM_CREATE = 0x0004, _OFM_APPEND = 0x0008 }; */ int File::open(const char* file, int flag) { if (_FileMgr == 0) return -1; _flag = flag; if (SUCCESS != IFILEMGR_Test(_FileMgr, file)) { _flag |= _OFM_CREATE; } else { _flag |= _OFM_APPEND; } _File = IFILEMGR_OpenFile(_FileMgr, file, _flag); if (!_File) { _FileMgr = 0; return -1; } if (_flag|_OFM_APPEND) { IFILE_Seek(_File,_SEEK_END,0); } return 0; }
size_t sk_fread(void* buffer, size_t byteCount, SkFILE* f) { SkASSERT(f); if (buffer == NULL) { int err = IFILE_Seek((IFile*)f, _SEEK_CURRENT, (int)byteCount); if (err == EFAILED) { SkDEBUGF(("sk_fread: IFILE_Seek(%d) failed returned:%d\n", byteCount, err)); return 0; } return byteCount; } else return IFILE_Read((IFile*)f, buffer, byteCount); }
bool sk_frewind(SkFILE* f) { SkASSERT(f); return IFILE_Seek((IFile*)f, _SEEK_START, 0) == SUCCESS; }