140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger/* libs/graphics/ports/SkOSFile_brew.cpp 240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** 340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Copyright 2006, The Android Open Source Project 440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Copyright 2009, Company 100, Inc. 540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** 640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Licensed under the Apache License, Version 2.0 (the "License"); 740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** you may not use this file except in compliance with the License. 840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** You may obtain a copy of the License at 940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** 1040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** http://www.apache.org/licenses/LICENSE-2.0 1140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** 1240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Unless required by applicable law or agreed to in writing, software 1340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** distributed under the License is distributed on an "AS IS" BASIS, 1440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** See the License for the specific language governing permissions and 1640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** limitations under the License. 1740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger*/ 1840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 1940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include "SkOSFile.h" 2040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 2140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#ifdef SK_BUILD_FOR_BREW 2240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 2340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include <AEEAppGen.h> 2440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include <AEEFile.h> 2540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include <AEEStdLib.h> 2640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 2740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek SollenbergerSkFILE* sk_fopen(const char path[], SkFILE_Flags flags) 2840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{ 2940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger int err; 3040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger OpenFileMode mode; 3140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger IFileMgr* fileMgr; 3240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger IFile* file; 3340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger IShell* shell; 3440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 3540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger shell = reinterpret_cast<AEEApplet*>(GETAPPINSTANCE())->m_pIShell; 3640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger err = ISHELL_CreateInstance(shell, AEECLSID_FILEMGR, (void**)&fileMgr); 3740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger if (err!= SUCCESS) 3840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return NULL; 3940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 4040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger if (flags & kWrite_SkFILE_Flag) 4140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger mode = _OFM_READWRITE; 4240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger else /* kRead_SkFILE_Flag */ 4340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger mode = _OFM_READ; 4440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 4540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger file = IFILEMGR_OpenFile(fileMgr, path, mode); 4640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger IFILEMGR_Release(fileMgr); 4740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 4840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return (SkFILE*)file; 4940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger} 5040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 5140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergersize_t sk_fgetsize(SkFILE* f) 5240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{ 5340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger FileInfo fileInfo; 5440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 5540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger IFILE_GetInfo((IFile*)f, &fileInfo); 5640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return fileInfo.dwSize; 5740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger} 5840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 5940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergerbool sk_frewind(SkFILE* f) 6040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{ 6140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkASSERT(f); 6240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return IFILE_Seek((IFile*)f, _SEEK_START, 0) == SUCCESS; 6340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger} 6440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 6540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergersize_t sk_fread(void* buffer, size_t byteCount, SkFILE* f) 6640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{ 6740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkASSERT(f); 6840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger if (buffer == NULL) 6940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger { 7040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger int err = IFILE_Seek((IFile*)f, _SEEK_CURRENT, (int)byteCount); 7140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger if (err == EFAILED) { 7240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkDEBUGF(("sk_fread: IFILE_Seek(%d) failed returned:%d\n", byteCount, err)); 7340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return 0; 7440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger } 7540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return byteCount; 7640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger } 7740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger else 7840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return IFILE_Read((IFile*)f, buffer, byteCount); 7940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger} 8040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 8140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergersize_t sk_fwrite(const void* buffer, size_t byteCount, SkFILE* f) 8240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{ 8340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkASSERT(f); 8440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger return IFILE_Write((IFile*)f, buffer, byteCount); 8540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger} 8640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 8740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergervoid sk_fflush(SkFILE* f) 8840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{ 8940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkASSERT(f); 9040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger} 9140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 9240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergervoid sk_fclose(SkFILE* f) 9340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{ 9440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkASSERT(f); 9540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger IFILE_Release((IFile*)f); 9640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger} 9740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 9840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#endif 9940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 100