Exemple #1
0
/**
 * 打开文件
 * @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;
}
Exemple #2
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);
}
Exemple #3
0
bool sk_frewind(SkFILE* f)
{
    SkASSERT(f);
    return IFILE_Seek((IFile*)f,  _SEEK_START, 0) == SUCCESS;
}